Problemas para popular selectonemenu primefaces + hibernate

1 resposta
G
Estou com problemas para conseguir popular um selectonemenu, vi que tem bastante tópicos sobre o assunto mas não consegui achar onde estou errando eestou levando um baile nessa parte do converter. No meu caso, ele não está apresentando nenhum erro, mas não está populando selectonemenu. Segue o código Converter
public class AdminConverter implements Converter{
	
	AdministradorDAO adminDAO = new AdministradorDAO();

	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		// TODO Auto-generated method stub

		return adminDAO.buscaPorId(value);
	}

	@Override
	public String getAsString(FacesContext context, UIComponent component, Object value) {
		// TODO Auto-generated method stub
		return value.toString();
		
	}
Controller
public List<Administrador> getListaAdministrador2() { // lista administradores
		
		List<Administrador> administrador = adminDAO.listaAdmin();
		return administrador;
	}
DAO
public List<Administrador> listaAdmin(){
		try{
			return session.createCriteria(Administrador.class).list();
		}catch (HibernateException e){
			e.printStackTrace();
		}catch (Exception e){
			e.printStackTrace();
		} finally{
			session.flush();
			session.close();
		}
		return null;
	}
	
	public Administrador buscaPorId(String  idAdmin){
		
		try{
			 int intIdAdmin = Integer.parseInt(idAdmin);
			 
			return (Administrador) session.createCriteria(Administrador.class).add(Restrictions.eq("intIdAdministrador",intIdAdmin)).uniqueResult();
		}catch (HibernateException e){
			e.printStackTrace();
		}catch (Exception e){
			e.printStackTrace();
		} finally{
			session.flush();
			session.close();
		}
		return null;
	}
e o xhtml
<p:selectOneMenu value="#{administradorController.selectedAdmin}"
								converter="AdminConverter" effect="drop" var="listaAdmin" >
								<f:selectItem itemLabel="Selecione" itemValue=""></f:selectItem>
								<f:selectItems
									value="#{administradorController.listaAdministrador2}"
									var="listaAdmin" itemLabel="#{listaAdmin.intIdAdministrador}"
									itemValue="#{listaAdmin}" />
							</p:selectOneMenu>

1 Resposta

Daniel_T_S

Veja esse exemplo:

ManagedBean

private class Bean{
   
   private Municipio municio;
   private List<SelectItem> municipios;

    public Municipio getMunicipio(){
           return municipio;
    }

    public setMunicipio(Municipio municipio){
             this.municipio = municipio;
    }
   
    public void getMunicipios() {
       if(municipios != null){
        for (Municipio municipio : new MunicipioDAO().listarMunicipios)) {
            municipios.add(new SelectItem(municipio , municipio .getNome()));
        }
      }
    }

}

Converter

@FacesConverter(forClass = Municipio.class, value = "MunicipioConverter")
public class MunicipioConverter implements Converter {

    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        MunicipioDAO dao = new MunicipioDAO();
        return dao.getMunicipioPorId(Integer.parseInt(value));
    }

    public String getAsString(FacesContext context, UIComponent component, Object value) {
        try {
            Municipio m = (Municipio) value;
            return String.valueOf(m.getId());
        } catch (NullPointerException e) {
            return "";
        }
    }
}

.xhtml

<p:selectOneMenu value="#{bean.municipio}">
                                                <f:selectItem itemLabel="Selecione"/>
                                                <f:selectItems value="#{bean.municipios}"/>
                                                <f:converter converterId="MunicipioConverter"/>
                                            </p:selectOneMenu>

Esse é só um exemplo. Seria interessante fazer um converter Genérico.

Criado 13 de maio de 2013
Ultima resposta 15 de mai. de 2013
Respostas 1
Participantes 2