Accès aux paramètres de chaîne de requête dans une méthode de post-construction dans un bean géré à portée de vue

StackOverflow https://stackoverflow.com//questions/23022831

  •  21-12-2019
  •  | 
  •  

Question

J'ai la page XHTML suivante.

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">

    <h:head>
        <title>Test</title>
    </h:head>

    <f:metadata>
        <f:viewParam name="id" value="#{testManagedBean.id}" maxlength="20"/>
    </f:metadata>

    <h:body>
        <h:form id="form" prependId="true">

        </h:form>
    </h:body>
</html>

Le bean géré correspond à la page JSF ci-dessus.

@ManagedBean
@ViewScoped
public final class TestManagedBean implements Serializable
{
    private static final long serialVersionUID = 1L;
    private Long id;

    @PostConstruct
    private void init() {
        System.out.println("id = "+id);
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}

je passe id en tant que paramètre de chaîne de requête en utilisant l'URL - https://localhost:8181/Project-war/admin_side/Test.jsf?id=1.

Essayer d'afficher id dans le init() la méthode est toujours null.

Ceci est une démonstration.En réalité, <f:viewParam> est en fait mis à l'intérieur <ui:define name="metaData"> et sur le modèle principal <ui:insert name="metaData"/> est défini.

Qu’est-ce que j’oublie ici ?

J'ai passé plusieurs fois de tels paramètres et converti en une entité JPA à l'aide de convertisseurs appropriés, mais je ne sais pas pourquoi une valeur scalaire n'est pas définie sur une propriété d'un bean géré.J'ai essayé de changer le type de id à String mais cela n'a pas aidé non plus (ni @ManagedProperty(value="#{id}") travaillé).

Était-ce utile?

La solution

La valeur de f:viewParam n'est pas disponible pendant @PostConstruct.Utiliser f:viewAction plutôt.

Voir

Voir également

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top