Bom dia senhores
uma coisa estranha que percebi no primefaces, estou utilizando o p:selectOneMenu e quando eu volto de uma tela ele simplesmente não mostra o valor selecionado, mesmo ele estando (pois eu debuguei e vi que o valor está correto e até removi ele e coloquei o h:selectOneMenu e ele mostrou corretamente). Alguem passou por isso? Abaixo está o meu código:
<p:selectOneMenu id="cbxTipoBusca" value="#{enderecoBean.tipoBusca}">
<f:selectItems value="#{enderecoBean.tipoBuscas}" />
<p:ajax event="change" update="pnlBairroAux,pnlCondicao" oncomplete="focalizar('frmCadastro:txtCondicao')" />
</p:selectOneMenu>
Só para comentar, o tipoBusca é um enum como pode ser visto abaixo:
EnderecoTipoBusca
package br.com.tebosoftware.controller.endereco;
/**
*
* @author Shubacca
* @data 14/01/2013
*/
public enum EnderecoTipoBusca {
LOGRADOURO("Logradouro"), CEP("Cep");
private String descricao;
private EnderecoTipoBusca(String descricao) {
this.descricao = descricao;
}
public String getDescricao() {
return descricao;
}
}
Grato
Você não precisa associar um converter a ele?
Esse objeto da lista possui o método equals sobrescrito?
Oi Rodrigo
No caso, o objeto é um enum e até onde eu sabia, os enum não precisavam de conversores, mas mesmo assim eu estava fazendo um teste com um conversor e mesmo assim não funciona.
É alguma falha do primefaces, pois com o componente padrão do jsf funciona corretamente.
Olha só, verdade… Nem me toquei que era um Enum hehehe 
Não é imprimido nenhum erro no console? ou até no log de js do browser? as vezes deu algum pau ali mesmo.
Não tem erro no console não.
Olha o código completo do pedaço…
<h:panelGrid columns="3" rowClasses="celulaTop">
<h:panelGrid>
<components:label value="Tipo Busca:" />
<p:selectOneMenu id="cbxTipoBusca" value="#{enderecoBean.tipoBusca}">
<f:selectItems value="#{enderecoBean.tipoBuscas}" />
<p:ajax event="change" update="pnlBairroAux,pnlCondicao" oncomplete="focalizar('frmCadastro:txtCondicao')" />
</p:selectOneMenu>
</h:panelGrid>
<h:panelGroup id="pnlBairroAux">
<h:panelGrid id="pnlBairro" columns="2" rowClasses="celulaBottom" rendered="#{enderecoBean.buscaLogradouro}">
<h:panelGrid>
<components:label value="Bairro:" />
<p:inputText value="#{(empty enderecoBean.bairro ? '<Todas>' : enderecoBean.bairro.descricao.concat('-').concat(enderecoBean.bairro.cidade.descricao).concat('-').concat(enderecoBean.bairro.cidade.estado.sigla))}" disabled="true" size="30" />
</h:panelGrid>
<h:panelGroup>
<p:commandLink title="Selecionar bairro" onclick="dlgBairro.show();return false;" styleClass="botaoProcurar" />
<p:commandLink title="Remover bairro" update="pnlBairro,pnlTabela" styleClass="botaoLimpar">
<f:setPropertyActionListener target="#{enderecoBean.bairro}" value="" />
</p:commandLink>
</h:panelGroup>
</h:panelGrid>
</h:panelGroup>
<h:panelGrid>
<components:label value="Condição:" />
<h:panelGroup id="pnlCondicao">
<p:focus for="txtCondicao" rendered="#{enderecoBean.buscaLogradouro}" />
<p:inputText id="txtCondicao" value="#{enderecoBean.condicao}" size="30" maxlength="50" rendered="#{enderecoBean.buscaLogradouro}" />
<p:focus for="txtCondicao2" rendered="#{enderecoBean.buscaCep}" />
<p:inputMask id="txtCondicao2" mask="99999-999" value="#{enderecoBean.condicao}" size="9" rendered="#{enderecoBean.buscaCep}" />
</h:panelGroup>
</h:panelGrid>
</h:panelGrid>
Por favor, alguém já conseguiu resolver esse problema?
Está acontecendo o mesmo comigo.