Resultado de Pesquisa

2 respostas
F

E ai galera, blz, estou com um probleminha pra retornar o resultado de uma pesquisa e gostaria q vcs me ajudassem, é o seguinte, possuo um formulário onde digito um código de profissional e abaixo deve ser retornado os dados desse profissional, mas tá dando um erro e não tô conseguindo descobrir onde tá o problema, os códigos são:

o xhtml:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:rich="http://richfaces.org/rich"
	xmlns:c="http://java.sun.com/jstl/core">

<ui:composition template="template.xhtml">
	<ui:define name="titulo">Profissional</ui:define>
	<ui:define name="content">
		<div id="formulario">
		<h1>Pesquisar Profissional</h1>
		<hr />
		<br />
		<h:panelGrid columns="4">
			<h:outputText value="Carteira do Profissional"
				styleClass="saidaTexto" />
			<h:inputText id="carteiraProfissional"
				value="#{pessoaController.pesquisa}" size="25" />
			<h:commandButton value="Pesquisar" style="margin-left: 5px;">
				<a4j:support event="onclick" reRender="resultado" />
			</h:commandButton>
			<h:message for="carteiraProfissional" styleClass="message" />
		</h:panelGrid><br />
		</div>
		<div id="profissionais"><h:panelGroup id="resultado">
		  <h:dataTable id="result" var="item" value="#{pessoaController.pesqPessoa}">
		  				<h:column id="column1">
				<h:outputText value="#{item.codigo}" />
				<f:facet name="header">
					<h:outputText value="ID" />
				</f:facet>
			</h:column>
			<h:column id="column2">
				<h:outputText value="#{item.nome}" />
				<f:facet name="header">
					<h:outputText value="Nome" />
				</f:facet>
			</h:column>

		  </h:dataTable>
		</h:panelGroup></div>

	</ui:define>

</ui:composition>

</html>

e controller:

package br.org.creapi.controller;

import java.util.HashMap;
import java.util.Map;

import javax.annotation.Resource;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import br.org.creapi.dao.DaoGenerico;
import br.org.creapi.entities.Pessoa;

@Controller("pessoaController")
@Scope("session")
public class PessoaController {

	private static final Log log = LogFactory.getLog(PessoaController.class);

	private DataModel model;

	public DataModel getModel() {
		return model;
	}

	public void setModel(DataModel model) {
		this.model = model;
	}

	@PersistenceContext
	private EntityManager entityManager;
	
	@Resource
	private DaoGenerico<Pessoa, String> pessoaDao;
	

	public DaoGenerico<Pessoa, String> getPessoaDao() {
		return pessoaDao;
	}

	public void setPessoaDao(DaoGenerico<Pessoa, String> pessoaDao) {
		this.pessoaDao = pessoaDao;
	}

	private String pesquisa = null;
	
	public void setPesquisa(String pesquisa) {
		this.pesquisa = pesquisa;
	}


	public String getPesquisa() {
		return pesquisa;
	}	

	
	public DataModel getPesqPessoa(){
		Map<String, Object> params = new HashMap<String,Object>();
		params.put("pesq", pesquisa+"%");
		String query = "SELECT p.codigo,p.nome,p.cpfcnpj FROM Pessoa p WHERE p.codigo LIKE :pesq";
		
		model = new ListDataModel(pessoaDao.listPesqParam(query, params));

		return model;
		
	}	
	
}

e o erro:

java.lang.NumberFormatException: For input string: "codigo"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	at java.lang.Integer.parseInt(Integer.java:449)
	at java.lang.Integer.parseInt(Integer.java:499)
	at javax.el.ArrayELResolver.coerce(ArrayELResolver.java:153)
	at javax.el.ArrayELResolver.getValue(ArrayELResolver.java:45)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
	at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
	at org.apache.el.parser.AstValue.getValue(AstValue.java:118)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
	at javax.faces.component.UIOutput.getValue(UIOutput.java:184)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201)

só observando q o campo codigo é string;

Obrigado

2 Respostas

thiago.correa

Qual é o tipo de objeto presente na lista que o método pessoaDao.listPesqParam retorna?!

F

O método é esse:

public List<T> listPesqParam(String query, Map<String, Object> params) {
		Query q = getEntityManager().createQuery(query);
		for(String chave:params.keySet()){
			q.setParameter(chave, params.get(chave));
		}
		return q.getResultList();
	}
Criado 5 de abril de 2010
Ultima resposta 6 de abr. de 2010
Respostas 2
Participantes 2