Tabela da JSF - duvida?

Olá, pessoal!

Estou duvidando como pegar as dados para colocar na tabela no jsf em utilizando hibernate. eu pesquisei na internet e encontramos esse códigos da tabela.

exemplo da tabela

<h:dataTable id="books"
 columnClasses="list-column-center,
  list-column-right, list-column-center,
list-column-right" headerClass="list-header"
 rowClasses="list-row" styleClass="list-
background" value="#{BookStore.items}" var="store">   
  <h:column>
    <f:facet name="header">
      <h:outputText  value="#{msg.storeNameLabel}"/>
    </f:facet>
     <h:outputText value="#{store.name}"/>
  </h:column>
  <h:column>
    <f:facet name="header">
     <Subject
    </f:facet>
     <h:outputText value="#{store.subject}"/>
  </h:column>
  <h:column>
    <f:facet name="header">
      <h:outputText  value="#{msg.storePriceLabel}"/>
    </f:facet>
     <h:outputText value="#{store.price}"/>
  </h:column>
</h:dataTable>

veja aonde pegou os dados da value="#{BookStore.items}" , como eu tentei código value="#{cliente.listarCadastro}" mas apareceu a linha de erro.

mas eu criei a classes…

Cliente

@Entity
public class Cliente {
	
	@Id
	@GeneratedValue
	private int id;
	private String nome;
	private String email;
	
	public String salvaCadastro(){
		ClienteDAO dao = new ClienteDAO();
		if(dao.incluirCliente(this.nome, this.email)){
			return "incluindoCadastro";
		} else {
			return "erroCadastro";
		}
	}
	
	public List<Cliente> ListarCadastro(){
		ClienteDAO dao = new ClienteDAO();
		if(dao.lista().size()>0){
			return dao.lista();
		} else {
			return null;
		}
		
	}
	
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
}

Database


public class Database {
	
	private static Database singleton = new Database();
	
	private SessionFactory sf;
	
	private Database(){
		sf = (new AnnotationConfiguration().configure("/Database/hibernate.cfg.xml")).buildSessionFactory();
	}
	
	public static Database getInstance(){
		return singleton;
	}

	
	public Session getSession(){
		return sf.openSession();
	}
}

ClienteDAO

public class ClienteDAO {
	
	@SuppressWarnings("unchecked")
	public boolean incluirCliente(String nome, String email){
		
		Session sessao = Database.getInstance().getSession();
		
		Cliente cli = new Cliente();
		
		cli.setNome(nome);
		cli.setEmail(email);
		
		sessao.save(cli);
		sessao.close();
		
		return true;

		
	}
	
	public List<Cliente> lista(){
		
		Session session = Database.getInstance().getSession();
		
		Query q = session.createQuery("from cliente");
		
		List<Cliente> list = q.list();
		
		return list;
		
	}

}

Espero que vcs me ajude… obrigadoo!!

Qual o erro?

Acabei de encontrar um site e dei jeito de criar uma classe ClienteControlador e apareceu o erro. veja em baixo…

mensagem de erro

exception 

javax.servlet.ServletException: /TelaLista.jsp(13,2) '#{clienteControlador.listaCliente }' Error reading 'listaCliente' on type Dao.ClienteControlador
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)


root cause 

org.apache.jasper.el.JspELException: /TelaLista.jsp(13,2) '#{clienteControlador.listaCliente }' Error reading 'listaCliente' on type Dao.ClienteControlador
	org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:107)
	javax.faces.component.UIData.getValue(UIData.java:614)
	javax.faces.component.UIData.getDataModel(UIData.java:1145)
	javax.faces.component.UIData.setRowIndex(UIData.java:451)
	com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:77)
	javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:816)
	javax.faces.component.UIData.encodeBegin(UIData.java:983)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:928)
	javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
	com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)
	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)


root cause 

org.hibernate.hql.ast.QuerySyntaxException: cliente is not mapped [from cliente]
	org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:181)
	org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)
	org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:93)
	org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:277)
	org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3056)
	org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2945)
	org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
	org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
	org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
	org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
	org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:251)
	org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183)
	org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:134)
	org.hibernate.engine.query.HQLQueryPlan.&lt;init&gt;(HQLQueryPlan.java:101)
	org.hibernate.engine.query.HQLQueryPlan.&lt;init&gt;(HQLQueryPlan.java:80)
	org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
	org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
	org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
	org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1650)
	Dao.ClienteDAO.lista(ClienteDAO.java:40)
	Dao.ClienteControlador.getListaCliente(ClienteControlador.java:14)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	javax.el.BeanELResolver.getValue(BeanELResolver.java:83)
	com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:173)
	com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:200)
	org.apache.el.parser.AstValue.getValue(AstValue.java:123)
	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
	javax.faces.component.UIData.getValue(UIData.java:614)
	javax.faces.component.UIData.getDataModel(UIData.java:1145)
	javax.faces.component.UIData.setRowIndex(UIData.java:451)
	com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:77)
	javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:816)
	javax.faces.component.UIData.encodeBegin(UIData.java:983)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:928)
	javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
	com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)
	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)

Classe ClienteControlador

public class ClienteControlador {
	
	public DataModel getListaCliente(){
		ClienteDAO dao = new ClienteDAO();
		 DataModel model;
		
		model = new ListDataModel(dao.lista());
		
		return model;
	}

}

TelaLista.jsf

&lt;f:view&gt;
	&lt;h:form&gt;
		&lt;h:dataTable id="listaCadastro"  value="#{clienteControlador.listaCliente }" var="cli"  styleClass="tabela"&gt;
			&lt;h:column headerClass="primeiro"&gt;
				&lt;f:facet name="header"&gt;
					&lt;h:outputText value="ID" /&gt;
				&lt;/f:facet&gt;
				&lt;h:outputText value="#{cliente.id }"/&gt;
			&lt;/h:column&gt;
			&lt;h:column headerClass="meio"&gt;
				&lt;f:facet name="header"&gt;
					&lt;h:outputText value="Nome" /&gt;
				&lt;/f:facet&gt;
				&lt;h:outputText value="#{cliente.nome }"/&gt;
			&lt;/h:column&gt;
			&lt;h:column headerClass="ultimo"&gt;
				&lt;f:facet name="header"&gt;
					&lt;h:outputText value="E-mail" /&gt;
				&lt;/f:facet&gt;
				&lt;h:outputText value="#{cliente.email }"/&gt;
			&lt;/h:column&gt;
		&lt;/h:dataTable&gt;
		
	&lt;/h:form&gt;
&lt;/f:view&gt;

Bom aprendi assim usando JSF 1.0:

public List<SelectItem> getCidades() { InterfaceDAO<Cidade> cidadeDAO = new HibernateDAO<Cidade>(Cidade.class, FacesContextUtil.getRequestSession()); List<Cidade> cidades = cidadeDAO.getBeans(); List<SelectItem> selectCidade = new ArrayList<SelectItem>(); for (Cidade cidade : cidades) { selectCidade.add(new SelectItem(cidade.getCodigo().toString(), cidade.getDescricao())); } return selectCidade; }

esse meu BackingBean popula esse componente:

	<h:panelGroup>
		<h:outputText value="Cidade:"></h:outputText>
		<h:selectOneMenu id="selectCidade" value="#{alunoBean.cid_Codigo}" title="Selecione uma cidade" disabled="#{not empty cityBean.codigoCidade}">
			 <f:selectItems value="#{entradaAlunosBBean.cidades}" id="aluno-cidade"/>
		</h:selectOneMenu >
	</h:panelGroup>

lembrando q no log de erro fala q a classe cliente nao esta mapeada…

Pessoal!

Já acabei de descobrir para resolver essa problemas… obrigado!!