Acessando consulta-parâmetros de seqüência de caracteres em um post construir método em um modo de exibição de escopo do bean gerenciado
Pergunta
Eu tenho a seguinte página XHTML.
<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>
O managed bean corresponde ao acima JSF página.
@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;
}
}
Eu estou de passagem id
como uma consulta parâmetro de seqüência de caracteres usando a URL - https://localhost:8181/Project-war/admin_side/Test.jsf?id=1
.
Tentando exibir id
no init()
o método é sempre null
.
Esta é uma demonstração.Na realidade, <f:viewParam>
é, na verdade, colocar dentro de <ui:define name="metaData">
e sobre o modelo de mestre <ui:insert name="metaData"/>
é definido.
O que estou vista aqui?
Eu tenho vários tempos passados como parâmetros e convertido para uma entidade JPA usando conversores adequados, mas eu não sei por que um valor escalar não está sendo definida como uma propriedade de um managed bean.Eu tentei mudar o tipo de id
a Cadeia de caracteres, mas que também não ajuda (nem @ManagedProperty(value="#{id}")
trabalhou).
Solução
O valor de f:viewParam
não está disponível durante a @PostConstruct
.Utilização f:viewAction
em vez disso.