Ajuda com selectOneMenu

2 respostas
Onimatsu
Boa tarde colegas. Estou tentando setar um item para o meu objeto grupo que está dentro do ManagerBean, porém ele mostra o seguinte erro: "Erro de expressão: Objeto denominado: grupo não encontrado." O que eu preciso colocar nesse selectOneMenu pra fazer funcionar?
<p:selectOneMenu value="#{managerBean.grupo}" effect="fade" converter="grupo">
                                    <f:selectItems value="#{managerBean.listaG}" var="grupo" itemLabel="#{grupo.titulo}" itemValue="#{grupo}"/>
                                </p:selectOneMenu>
@ManagedBean
@SessionScoped
public class ManagerBean {
    
    private List<Grupo> listaG;
    private Grupo grupo;

    /**
     * Creates a new instance of ManagerBean
     */
    public ManagerBean() {
        this.grupo = new Grupo();
    }
    
    public Grupo getGrupo() {
        return grupo;
    }
    
    public void setGrupo(Grupo grupo) {
        this.grupo = grupo;
    }
    
    public List<Grupo> getListaG() {
        return this.listaG = new GrupoDao().getLista();
    }
}

2 Respostas

Roselito_Favero_da_S

Está faltando implementar o seu converter, que coincidentemente tem o mesmo nome.

N

Ja usei o selectOneMenu.

<p:selectOneMenu value="#{managerBean.grupo}" effect="fade" converter="grupo">  
    <f:selectItems value="#{managerBean.listaG}" var="grupo" itemLabel="#{grupo.titulo}" itemValue="#{grupo}"/>  
</p:selectOneMenu>

Ali onde está [color=red]value="#{managerBean.grupo}"[/color] eu coloquei, no seu exemplo: managerBean.valGrupo . Voce declara essa variavel no Bean mesmo como valor Integer, pois volta o número do ID do grupo.

GrupoDao grDao = new GrupoDao();
Grupo gr = grDao.find(valGrupo);
variavel.setGrupo(gr);

Então coloquei um botão que vai a função salvar(), e dentro coloquei esse código parecido em cima. A função find que está no DAO, no seu caso GrupoDao

public Grupo find(Integer id_grupo) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("Tua Unidade de Persistencia");
        EntityManager em = emf.createEntityManager();
    
        try {
            Grupo g = em.find(Grupo.class, id_grupo);
            return g;
        } catch (Exception e) {
            e.getMessage();
        } finally {
            em.close();
            emf.close();
        }
        return null;
    }

Qualquer coisa, só chamar. Valeu

Criado 27 de outubro de 2013
Ultima resposta 7 de nov. de 2013
Respostas 2
Participantes 3