[Resolvido] não carrega lista em um p:selectOneMenu

Boa tarde pessoal. Tenho um tela de cadastro de paciente e nessa tela tem o campo plano que é chave estrangeira da tabela plano.

Preciso carregar em um p:selectOneMenu chamado plano todos os planos cadastrados na tabela plano, com o código abaixo
consigo carregar somente o primeiro plano cadastrado da tabela plano, os demais não, acho que estou quase lá, alguém poderia me ajudar no código?

PlanoController.java



package br.com.clinica.controller;

import br.com.clinica.dao.PlanoDao;
import br.com.clinica.dao.InterfacePlano;
import br.com.clinica.dao.PlanoDao;
import br.com.clinica.dao.InterfacePlano;
import br.com.clinica.model.Plano;
import java.awt.event.ActionEvent;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import org.primefaces.context.RequestContext;


@ManagedBean
@SessionScoped
public class PlanoController {

    private Plano plano;
    private DataModel listaPlano;

    public Plano getPlano() {
        if (this.plano == null) {
            this.plano = new Plano();
        }
        return plano;
    }

    public void setPlano(Plano plano) {
        this.plano = plano;
    }

    public DataModel getListaPlano() {
        List<Plano> lista = new PlanoDao().list();
        listaPlano = new ListDataModel(lista);
        return listaPlano;
    }

    public void prepararAdicionarPlano(ActionEvent actionEvent) {
        plano = new Plano();
    }

    public void prepararAlterarPlano(ActionEvent actionEvent) {
        plano = (Plano) (listaPlano.getRowData());
    }

    public void adicionar(ActionEvent actionEvent) {
        InterfacePlano dao = new PlanoDao();
        if ("".equals(plano.getDen_plano())) {
            FacesContext.getCurrentInstance().addMessage("atencao", new FacesMessage(FacesMessage.SEVERITY_WARN, "Plano não deve ser nulo!", ""));
        } else {
            dao.salvar(plano);
            FacesContext.getCurrentInstance().addMessage("ok", new FacesMessage(FacesMessage.SEVERITY_INFO, "Plano incluído com sucesso!", ""));
        }

    }

    public String excluir() {
        Plano plano = (Plano) (listaPlano.getRowData());
        InterfacePlano dao = new PlanoDao();
        dao.remover(plano);
        return "plano";
    }

    public void atualizarPlano() {
        InterfacePlano dao = new PlanoDao();
        dao.atualizar(plano);        
        RequestContext.getCurrentInstance().closeDialog(plano);        
    }

    public void choosePlano() {
        this.prepararAlterarPlano(null);
        RequestContext.getCurrentInstance().openDialog("planoAlterar");
    }
    
    public String carregarPlano(Plano p){
        plano = p;
        return "plano";
    }
}

e aqui o código do meu p:selectOneMenu


<p:selectOneMenu id="plano" 
                                         value="" 
                                         style="height:25px; font-size: 13px; width: 80px" 
                                         onkeyup="this.value = this.value.toUpperCase();">
                            <f:selectItem itemLabel="#{planoController.plano.den_plano}"                             
                                          itemValue="#{plano}" />  
                        </p:selectOneMenu> 

Você tem que usar f:selectItems (no plural) e apontá-lo para uma lista no seu bean. Dependendo de como você for fazer, talvez precise de um conversor. Veja o showcase do primefaces com calma, lá está bem explicado.

então, eu já dei uma olhada no showcase do primefaces, tentei usar esse conversor, mas não consegui…

tentei também usar f:selectItems (no plural) mas não deu certo…

será que você não poderia me ajudar com meu código se não for pedir demais?

Veja o primeiro post desta discussão (o restante da discussão não ajuda muito…) - serve pra você fazer um select sem o conversor:]

http://www.guj.com.br/java/302398-solucao-para-pegar-valor--selectonemenu-sem-utilizar-converter---simples--resolvido

ja fiz um teste dessa maneira, mas também sem sucesso :frowning:

com esse código

<p:selectOneMenu id="plano"   
                                         value=""   
                                         style="height:25px; font-size: 13px; width: 80px"   
                                         onkeyup="this.value = this.value.toUpperCase();">  
                            <f:selectItem itemLabel="#{planoController.plano.den_plano}"                               
                                          itemValue="#{plano}" />    
                        </p:selectOneMenu> 

eu consigo carregar um plano pro meu p:selectOneMenu, acredito eu que pra carregar a lista toda não está tão longe, mas não estou conseguindo :confused:

consegui…

usei esse link de exemplo: http://mateuscordeiro.wordpress.com/2012/07/11/utilizando-pselectonemenu-do-primefaces-3-0/

muito obrigado mesmo assim pessoal.