Feras,
estou querendo passar o valor selecionado de um p:selectOneMenu mas esta dando o erro de The class ‘java.lang.String’ does not have the property ‘codigo’ acredito que preciso implementar um conversor mas mesmo assim esta com o erro
<p:selectOneMenu value="#{paramMbean.relatorios}" id="idRelatorio" style="width:200px" converter="paramConverter" valueChangeListener="#{paramDelegate.carregarComboElementos}">
<f:selectItem itemLabel="Selecione o Relatório" itemValue="0"/>
<f:selectItems value="#{paramMbean.listaRelatorios}" var="param" itemValue="#{param}" itemLabel="#{param.codRelPay}" />
<f:ajax render="idElemento" event="change" />
</p:selectOneMenu>
Tem certeza que o erro é nesse trecho que vc colou? Não tem nenhuma propriedade “codigo” sendo acessada.
eu escrevi ‘codigo’ mas e referenciando o trecho itemLabel="#{param.codRelPay}"
Qual seria o tipo de #{paramMbean.listaRelatorios}?
Isso e uma lista de objetos…Consegui resolver isso, mas o problema e que tenho 2 combos,
a segunda combo exibe os valores de acordo que for escolhida na primeira, o problema que a minha segunda combo esta exibindo o objeto
e não o valor o que tenho que fazer ?
<f:selectItems value="#{parametrizacaoMbean.listaElementos}" >
Você sobrescreveu o método toString da classe que quer exibir?
Então sobrescreva 
se eu entendi sua descrição do problema, isso deve resolver.
Fera,
na vdd estou fazendo um loop e consigo em modo debug ver o valor do meu Objeto conforme preciso
for(ParamConfElemRelpayTO elemRelpayTO: listaElementos){
elemRelpay = new ParamConfElemRelpayTO();
elemRelpay.setNomeElemento(elemRelpayTO.getNomeElemento());
elemRelpay.setCodTipoPlano(elemRelpayTO.getCodTipoPlano());
elemRelpay.setCodTipoParcelado(elemRelpayTO.getCodTipoParcelado());
elemRelpay.setCodTipoValor(elemRelpayTO.getCodTipoValor());
if(elemRelpay.getNomeElemento() != null){
listaStrElementos.add(elemRelpay);
parametrizacaoMbean.setListaElementos(listaStrElementos);
}else{
System.out.println("Não tem elemento irá fazer outra consulta no BD com as demais informações");
}
}
e na combo esta assim:
<p:selectOneMenu id="idElemento" value="#{parametrizacaoMbean.elemento}" disabled="#{parametrizacaoMbean.elemRelpayTO.codRelPay == 0 || parametrizacaoMbean.elemRelpayTO.codRelPay == null}" style="width:200px" converter="parametrizacaoConverter">
<f:selectItem itemLabel="Selecione o Elemento" itemValue="0" />
<f:selectItems value="#{parametrizacaoMbean.listaElementos}" />
</p:selectOneMenu>
mas continua exibindo o objeto e não o valor do “elemento”
Você chegou a tentar implementar o que eu sugeri?
como fica da forma que vc falou ?
Você implementa o método toString da classe em questão para retornar os dados que você quer que sejam exibidos
Na classe onde eu tenho
for(ParamConfElemRelpayTO elemRelpayTO: listaElementos){
elemRelpay = new ParamConfElemRelpayTO();
elemRelpay.setNomeElemento(elemRelpayTO.getNomeElemento());
elemRelpay.setCodTipoPlano(elemRelpayTO.getCodTipoPlano());
elemRelpay.setCodTipoParcelado(elemRelpayTO.getCodTipoParcelado());
elemRelpay.setCodTipoValor(elemRelpayTO.getCodTipoValor());
if(elemRelpay.getNomeElemento() != null){
listaStrElementos.add(elemRelpay);
parametrizacaoMbean.setListaElementos(listaStrElementos);
}else{
System.out.println("Elemento Sem nome");
}
}
Basta acrescentar isso abaixo ?
@Override
public String toString() {
return listaStrElementos.toString();
}
Você tem que implementar o toString na classe ParamConfElemRelpayTO
Valeu cara deu certo…
ridículo isso mas estava tendo problemas
coloquei o método na classe que vc citou e funfo
@Override
public String toString() {
return this.nomeElemento;
}
Só a título de informação, você também pode usar as tags itemValue e itemLabel caso seja melhor do que sobrescrever o toString