tylika
Novembro 17, 2009, 11:10pm
#1
Bem,
eu tenho uma tabela na qual já conseguir cadastrar os itens no banco de dados…mais não sei como fazer listar os dados numa tabela.
já li vários artigos e sempre ocorre erros.
PessoaDAO
// parte do codigo
public List<Pessoa> listarTodos(){
Criteria criteria= session.createCriteria(Pessoa.class).addOrder(Order.asc("nome"));
List<Pessoa> resultado = criteria.list();
return resultado;
}
PessoaBean
public class PessoaBean{
private Pessoa pessoa = new Pessoa();
private List<Pessoa> listPessoa= null;
private Session session = FacesContextUtil.getRequestSession();
private PessoaDAO pessoaDAO = new PessoaDAO(session);
public String pesquisa(){
if (!pessoa.getNome().equals("")){
listPessoa = pessoaDAO.listarTodos();
}
return null;
}
/**get e set omitidos
}
jsp
<h:form>
<a4j:keepAlive beanName="pessoaBean"></a4j:keepAlive>
<rich:panel id="formPesquisa">
<h:panelGrid columns="2">
<h:outputText value="Nome: " id ="nomePesquisa" />
<h:inputText value="#{pessoaBean.pessoa.nome}" style="width: 251px" />
</h:panelGrid>
<h:commandButton value="Pesquisar" action="#{pessoaBean.pesquisa}" />
</rich:panel>
<h:dataTable id="pessoaConsulta"
var="item" value="pessoaBean.listPessoa">
<f:facet name="header">
<rich:columnGroup>
<h:column>
<h:outputText id="consultanome" value="Nome"/>
</h:column>
<h:column>
<h:outputText id="consultasobrenome" value="SobreNome"/>
</h:column>
</rich:columnGroup>
</f:facet>
<h:column>
<h:outputText value="#{item.nome}"></h:outputText>
</h:column>
<h:column>
<h:outputText value="#{item.sobrenome}"></h:outputText>
</h:column>
</h:dataTable>
</h:form>
Ele não faz a pesquisa…diz não achar a propriety “item.nome”, estou usando escopo de sessão, mais mesmo assim ele fecha a sessão antes…
estou perdida com isso…
help me
tylika
Novembro 17, 2009, 11:29pm
#2
Parte do erro
Caused by: javax.faces.el.EvaluationException: org.apache.jasper.el.JspELException: /pages/pesquisaPessoa.jsp(120,8 ) ‘#{alunoBean.pesquisa}’ org.hibernate.SessionException: Session is closed!
at javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:79)
at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:54)
… 36 more
Caused by: org.apache.jasper.el.JspELException: /pages/pesquisaAluno.jsp(120,8 ) ‘#{pessoaBean.pesquisa}’ org.hibernate.SessionException: Session is closed!
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:77)
at javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:75)
… 37 more
Caused by: org.hibernate.SessionException: Session is closed!
facescongig.xml
<managed-bean>
<managed-bean-name>pessoaBean</managed-bean-name>
<managed-bean-class>br.com.siscom.controller.PessoaBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
colored
Novembro 18, 2009, 8:51am
#3
a Sessão ta Fechada… ja Aconteceu comigo tipo, antes meus metodos abriam uma sessao, fazia uma operação e fechava essa conexão…
e nesses metodos de de listar geralmente num precisa abrir por isso como vc fechou na operação anterior vc n tem sessão corrente pra utilizar o Criteria…
Eh Isso :D…
Ow vc tira os session.close.
ou vc abre uma sessao antes de utilizar o metodo de list.
tylika
Novembro 18, 2009, 5:24pm
#4
Mudei todo o codigo e estudando sobre o assunto percebi que tenho de usar um DataModel para pegar os objetos e jogar na tabela…
entao fiz assim:
[code] a4j:form
<rich:messages />
<rich:panel id=“consulta” style=“width:500px;”>
<f:facet name=“header”>
<h:outputText value=“Pesquisar pessoa”></h:outputText>
</f:facet>
<h:panelGrid columns=“2”>
<h:outputText value=“Nome:” />
<h:inputText id=“nome” value="#{pessoaBean.pessoa.nome}">
</h:inputText>
<h:commandButton value="Pesquisar"
action="#{pessoaBean.getPessoas}"></h:commandButton>
</h:panelGrid>
</rich:panel>
</a4j:form>
<rich:dataTable value=“pessoaBean.objetos” var=“item”>
<f:facet name=“header”>
rich:columnGroup
<h:column>
<h:outputText value=“Nome”/>
</h:column>
<h:column>
<h:outputText value=“SobreNome”/>
</h:column>
</rich:columnGroup>
</f:facet>
<h:column>
<h:outputText value="#{item.nome}"></h:outputText>
</h:column>
<h:column>
<h:outputText value="#{item.sobrenome}"></h:outputText>
</h:column>
</rich:dataTable>[/code]
meu Bean
[code] public List getPessoas(){
Session session = FacesContextUtil.getRequestSession();
InterfaceDAO pessoaDAO = new HibernateDAO
(Pessoa.class,FacesContextUtil.getRequestSession());
Pessoa pessAux = new Pessoa();
pessAux.setNome(getPessoa().getNome());
lista = pessoaDAO.getBeansByExample(pessAux);
return lista;
}
public DataModel getObjetos() {
return objetos = new ListDataModel(lista);
}
public void setObjetos(DataModel objetos) {
this.objetos = objetos;
}
public Aluno getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
[/code]
Caused by: javax.faces.FacesException: Could not retrieve value of component with path : {Component-Path : [Class: org.ajax4jsf.component.AjaxViewRoot,ViewId: /pages/pesquisaPessoa.jsp][Class: org.richfaces.component.html.HtmlDataTable,Id: j_id_jsp_1612259591_10][Class: javax.faces.component.UIColumn,Id: j_id_jsp_1612259591_16][Class: javax.faces.component.html.HtmlOutputText,Id: j_id_jsp_1612259591_17]}
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getValue(RendererUtils.java:331)
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getStringValue(RendererUtils.java:279)
at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.renderOutput(HtmlTextRendererBase.java:74)
at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.encodeEnd(HtmlTextRendererBase.java:61)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:607)
… 49 more
Caused by: org.apache.jasper.el.JspPropertyNotFoundException: /pages/pesquisaPessoa.jsp(143,6) ‘#{item.nome}’ Property ‘nome’ not found on type java.lang.String
at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:104)
at javax.faces.component.UIOutput.getValue(UIOutput.java:68 )
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getValue(RendererUtils.java:327)
… 53 more
Alguém sabe sobre esse erro.
??
lgweb
Novembro 18, 2009, 5:28pm
#5
Amigo veja sua DataTable
<rich:dataTable value="pessoaBean.objetos" var="item">
nao deveria ser:
<rich:dataTable value="#{pessoaBean.objetos}" var="item">
???
tylika
Novembro 18, 2009, 5:37pm
#6
OPS…corrigido o erro
<rich:dataTable value="#{pessoaBean.objetos}" var="item">
Mas aparece essa mensagem de erro
Caused by: org.apache.jasper.el.JspELException: /pages/pesquisaPessoa.jsp(131,0) ‘#{pessoaBean.objetos}’ Error reading ‘objetos’ on type br.com.siscom.controller.PessoaBean
at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:107)
at javax.faces.component.UIData.getValue(UIData.java:978 )
at org.ajax4jsf.component.UIDataAdaptor.getValue(UIDataAdaptor.java:1624)
at org.ajax4jsf.component.SequenceDataAdaptor.getDataModel(SequenceDataAdaptor.java:65)
at org.ajax4jsf.component.SequenceDataAdaptor.createDataModel(SequenceDataAdaptor.java:59)
at org.richfaces.component.UIDataTable.createDataModel(UIDataTable.java:120)
at org.ajax4jsf.component.UIDataAdaptor.getExtendedDataModel(UIDataAdaptor.java:621)
at org.ajax4jsf.component.UIDataAdaptor.setRowKey(UIDataAdaptor.java:339)
at org.richfaces.renderkit.AbstractTableRenderer.encodeTableStructure(AbstractTableRenderer.java:138 )
at org.richfaces.renderkit.html.DataTableRenderer.doEncodeBegin(DataTableRenderer.java:160)
at org.richfaces.renderkit.html.DataTableRenderer.doEncodeBegin(DataTableRenderer.java:148 )
at org.ajax4jsf.renderkit.RendererBase.encodeBegin(RendererBase.java:100)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:579)
… 40 more
Caused by: java.lang.NullPointerException: list
at javax.faces.model.ListDataModel.(ListDataModel.java:41)
at br.com.siscom.controller.PessoaBean.getObjetos(PessoaBean.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.access$301(FacesCompositeELResolver.java:46)
at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver$4.invoke(FacesCompositeELResolver.java:108 )
at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.invoke(FacesCompositeELResolver.java:148 )
at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:104)
at org.apache.el.parser.AstValue.getValue(AstValue.java:114)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
… 52 more
lgweb
Novembro 18, 2009, 5:44pm
#7
Cara sua lista esta vazia tente assim:
# public DataModel getObjetos() {
# return objetos = new ListDataModel(lista); //Aki ficou doidera lista/atribui/retorna bem fuleiro msm rsrsr
# }
public DataModel getObjetos() {
lista = pessoaDAO.getBeansByExample(pessAux);
return new ListDataModel(lista);
}
tylika
Novembro 18, 2009, 5:52pm
#8
Gracias Lgweb
Alterei o codigo e deu certo…ele me lista todos os dados do bd…agora vou dá continuidade nessa tabela…quero colocar um action pra excluir e alterar…
Vlw