Pessoal:
Estou implementando uma mudança para trabalhar com o Primefaces.
Na minha estrutura de fullpage, implementei o seguinte:
<p:layoutUnit position="center">
<h:panelGrid width="50%" columns="3" >
<p:panel header="Escolha a opção de Login desejada" id="painelLogin" >
<h:selectOneRadio id="radio1" value="#{radioSelecao.codigoEmpresa}" layout="pageDirection" >
<f:selectItem itemLabel="Código Empresa" id="a" itemValue="Código Empresa"/>
<f:selectItem itemLabel="CNPJ Empresa" id="b" itemValue="CNPJ Empresa"/>
<f:selectItem itemLabel="CPF" id="c" itemValue="CPF"/>
<f:selectItem itemLabel="Código Escritório" id="d" itemValue="Código Escritório"/>
<f:selectItem itemLabel="CNPJ Escritório" id="e" itemValue="CNPJ Escritório"/>
<f:ajax execute="@form" render="rotuloCodigo"/>
</h:selectOneRadio>
</p:panel>
<p:panel header="Dados de Login" id="painelLoginD" >
<h:panelGrid width="50%" columns="2" >
<h:outputLabel id="rotuloCodigo" value="#{radioSelecao.codigoEmpresa}"/>
<p:inputMask value="" mask="999999"/>
<h:outputText value="Senha" id="rotuloSenha"></h:outputText>
<h:inputSecret id="senha" maxlength="6" size="6"></h:inputSecret>
<h:commandButton id="submit" value="Logar" action="nextPage"></h:commandButton>
</h:panelGrid>
</p:panel>
</h:panelGrid>
</p:layoutUnit>
O problema é que, quando eu acesso a página pela primeira vez, a linha:
<h:outputLabel id=“rotuloCodigo” value="#{radioSelecao.codigoEmpresa}"/>
me retorna o conteúdo correto do item selecionado. Porém, quando eu clico em outro botão, o conteúdo do rótulo simplesmente some.
Já tentei modificar o escopo do meu bean, que consta abaixo:
@ManagedBean
@SessionScoped
public class RadioSelecao implements Serializable {
private String codigoEmpresa= "Código Empresa";
private String cnpjEmpresa="CNPJ Empresa";
private String cpf="CPF";
private String codigoEscritorio="Código Escritório";
private String cnpjEscritorio="CNPJ Escritório";
private boolean selecionouCNPJ;
/** Creates a new instance of RadioSelecao */
public RadioSelecao() {
}
...gets e setters...
@PostConstruct
public void setarCampos(){
this.codigoEmpresa= "Código Empresa";
this.cnpjEmpresa="CNPJ Empresa";
this.cpf="CPF";
this.codigoEscritorio="Código Escritório";
this.cnpjEscritorio="CNPJ Escritório";
}
}
Inclusive fiz a mudança via faces-config (não consegui fazer funcionar apenas pela anotação, sem incluir a definição no xml…)
<managed-bean>
<managed-bean-name>radioSelecao</managed-bean-name>
<managed-bean-class>br.com.nscinfo.navega.RadioSelecao</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Alguém tem alguma ideia do que pode ser? Algum problema do Primefaces? Alguma alternativa de implementar isso de outra forma?