Duvida selectonemenu

3 respostas
D

Senhores estou iniciando meus estudos em java por um exemplo de CRUD.
estou montando algo bem simples como cliente, produto e vendas.
gostaria de carregar em vendas um select com os nomes dos clientes e outro com produtos.
não estou conseguindo carregar o selectonemenu, podem me ajudar? segue o codigo:

no clientecontroller:

public DataModel getListarClientes() {

List lista = new ClienteDaoImp().list();

listaClientes = new ListDataModel(lista);

return listaClientes;

}
no clienteDao:

public List list() {

Session session = HibernateUtil.getSessionFactory().openSession();

Transaction t = session.beginTransaction();

List lista = session.createQuery(“from Cliente”).list();

t.commit();

return lista;

}

no venda.xhtml:



<f:selectItems value="#{clienteController.listarNomes}" />

no lugar do nome aparece apenas: Model.Cliente@5ffsd

agradeco a ajuda e boa noite a todos!!

3 Respostas

Daniel_T_S

Cara não sei se é isso que você deseja mas veja esse exemplo:

Cliente

public class Cliente{
        
        private Integer id;
        private String nome;
        
        //gets, sets, equals e hashCode.

}

No ClienteBean você precisa de uma lista de SelectItens com os clientes
que é o que você vai mostar na tela. Veja

public class ClienteBean{
       
        private List<SelectItem> clientes;
        private Cliente cliente; //Cliente para persistir

        public List<SelectItem> getTiposAcao() {


            clientes= new LinkedList<SelectItem>();

            List<Clientes> clis = new ClienteDAO().listar();

            if (clis != null) {

                for (Cliente cliente : clis) {
                    clientes.add(new SelectItem(cliente, cliente.getNome()));
                }

            }

        

        return clientes;
    }


}

Também é necessário um conversor - obs: Seria bom fazer um genérico.

@FacesConverter(forClass = Cliente.class, value = "ClienteConverter")
public class ClienteConverter implements Converter {

    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        ClienteDAO clienteDAO = new ClienteDAO ();
        return clienteDAO.getClientePorId(Integer.parseInt(value));
    }

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

No xhtml voce teria algo assim:

<p:selectOneMenu id="clientes" value="#{ClienteBean.cliente}">
                                                <f:selectItem itemLabel="Selecione"/>
                                                <f:selectItems value="#{ClienteBean.clientes}"/>
                                                <f:converter converterId="ClienteConverter"/>
                                            </p:selectOneMenu>

Olha se funciona pra você.
Valeu.

D

Valeu daniel!!! reslvido!! muito obrigado mesmo. voce me indica algum material pra estudo?

Daniel_T_S

Por nada cara.

Seguinte tem um apostila da Caelum sobre JSF tenho quase certeza que ele é gratis.
Também tem uma da algaWorks muito boa sobre JSF e umas vídeo aulas da DevMedia sobre isso (Elas são pagas).

Criado 23 de abril de 2013
Ultima resposta 24 de abr. de 2013
Respostas 3
Participantes 2