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!!
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.
Valeu daniel!!! reslvido!! muito obrigado mesmo. voce me indica algum material pra estudo?
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).