Listar dados do banco, como faço?//[RESOLVIDO]

7 respostas
T

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

7 Respostas

T

Parte do erro

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

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.

T

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:

<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>
meu Bean
public List<Pessoa> getPessoas(){
	   Session session = FacesContextUtil.getRequestSession();
       InterfaceDAO<Pessoa> pessoaDAO = new HibernateDAO<Pessoa>
       (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;
	}
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.
??

L

Amigo veja sua DataTable

&lt;rich:dataTable   value="pessoaBean.objetos" var="item"&gt;

nao deveria ser:

&lt;rich:dataTable   value="#{pessoaBean.objetos}" var="item"&gt;

???

T

OPS…corrigido o erro

<rich:dataTable   value="#{pessoaBean.objetos}" var="item">

Mas aparece essa mensagem de erro

L

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);  
}
T

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

Criado 17 de novembro de 2009
Ultima resposta 18 de nov. de 2009
Respostas 7
Participantes 3