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!!
raf4ever:
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.<init>(HQLQueryPlan.java:101)
org.hibernate.engine.query.HQLQueryPlan.<init>(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
<f:view>
<h:form>
<h:dataTable id="listaCadastro" value="#{clienteControlador.listaCliente }" var="cli" styleClass="tabela">
<h:column headerClass="primeiro">
<f:facet name="header">
<h:outputText value="ID" />
</f:facet>
<h:outputText value="#{cliente.id }"/>
</h:column>
<h:column headerClass="meio">
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{cliente.nome }"/>
</h:column>
<h:column headerClass="ultimo">
<f:facet name="header">
<h:outputText value="E-mail" />
</f:facet>
<h:outputText value="#{cliente.email }"/>
</h:column>
</h:dataTable>
</h:form>
</f:view>
luxu
Fevereiro 13, 2011, 12:59am
#4
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!!