Estou com o seguinte problema:
Em minha jsp eu tenho uma pagina para pesquisar os clientes, na qual tem um jsp (listacliente.jsp) que é incluida, nela a um rich:datatable para mostrar os
dados vindos do banco.
Eu estou tentando fazer uma filtragem nessa lista para que mostre apenas os dados selecionados pelas condicoes passadas ao metodo.
O problema primeiro problema é:
Se deixo assim na JSP
<rich:dataTable id="clientes" value="#{conClienteHandler.clientes}"
var="c" rendered="#{not empty conClienteHandler.clientes}" rows="5">
e no bean deixo assim
private List<Cliente> clientes = new ArrayList<Cliente>();
public void setClientes(List<Cliente> clientes) {
this.clientes = clientes;
}
public List<Cliente> getClientes() {
System.out.println("Lendo Clientes...");
Session session = HibernateUtil.currentSession();
Dao<Cliente> dao = new Dao<Cliente>(session, Cliente.class);
return dao.list();
}
no Dao generico o list esta assim
@SuppressWarnings("unchecked")
public List<T> list() {
logger.info("Listando todos");
return session.createCriteria(persistentClass).list();
}
A pagina JSP é exibida normalmente, e me traz todos os clientes cadastrados.
Mais se coloco assim:
<rich:dataTable id="clientes" value="#{conClienteHandler.criaLista}"
var="c" rendered="#{not empty conClienteHandler.criaLista}" rows="5">
no bean
@SuppressWarnings("unchecked")
public List<Cliente> listaLocalizar(String nome) {
Session session = HibernateUtil.currentSession();
Criteria criteria = session.createCriteria(Cliente.class);
Criteria subCriteria = criteria.createCriteria("Cliente");
subCriteria.add(Restrictions.like("nome_cli", nome));
return criteria.list();
}
@SuppressWarnings("unchecked")
public List<Cliente> getCriaLista() {
return listaLocalizar(this.cliente.getNome());
}
A pagina nem chega a ser exibida, dando o erro:
WARNING: executePhase(RENDER_RESPONSE 6,com.sun.faces.context.FacesContextImpl@ba5a81) threw exception
javax.faces.FacesException: org.apache.jasper.el.JspELException: /ListaCliente.jsp(8,2) ‘#{not empty conClienteHandler.criaLista}’ Error reading ‘criaLista’ on type br.com.saudetotal.ConClienteHandler
E o segundo problema é:
Estou tentando entender o funcionamento do Criteria e não tenho certeza se está certo para me trazer os clientes que eu fornecer o nome.
Agradeceria muito se alguem pudesse ajudar.
Abracos
Dimas