Pessoal,
Tenho um bean chamado Pessoa ( que contém os métodos get e set) e um outro PessoaFacade( com os métodos incluir, alterar, pesquisar, etc).
Fiz um form de pesquisa onde eu só informava o nome e o mesmo chamava o método pesquisar com um parâmetro busca. Até aí beleza.
Agora o meu usuário preencherá um form que contém uns 15 campos para pesquisa (ele pode preencher todos ou apenas alguns). O que eu estou fazendo:
Quando ele preencher os campos e clicar em pesquisar eu estou mandando para uma página pesquisa.jsp
Em vez de passar os 15 parâmetros para o método estava querendo passar apenas o objeto, mas não obtive êxito.
Segue abaixo a minha idéia:
<jsp:useBean id=“conexao” class=“utils.Conecta” />
<jsp:setProperty name=“conexao” property="*" />
<jsp:useBean id=“pessoa” class=“beans.Pessoa” />
<jsp:setProperty name=“pessoa” property="*" />
<jsp:useBean id=“pessoaFacade” class=“beans.PessoaFacade” />
<jsp:setProperty name=“pessoaFacade” property="*" />
//parâmetro
String busca = request.getParameter(“busca”);
//efetua a pesquisa
pessoa.setNome(busca);
pessoas = pessoaFacade.pesquisar(pessoa);
No pessoaFacade tenho o método pesquisar();
//pesquisa pessoas desaparecidas
public synchronized java.util.Vector pesquisar(Pessoa pess) {
try {
//prepara
ps = con.prepareStatement(" SELECT a.cd_pessoa, a.nome, a.foto" +
" , to_char(a.data_desap,‘DD/MM/YYYY’) as data_desap" +
" , b.cd_cidade, b.dsc_cidade, b.cd_estado" +
" FROM pessoa_desaparecida a, cidade b" +
" WHERE a.cd_cidade = b.cd_cidade" +
" and upper(a.nome) LIKE upper(’%?%’)" +
" ORDER BY a.data_inclusao desc");
//seta
ps.setString(1, pess.getNome());
//executa
ResultSet rs1 = ps.executeQuery();
if(rs1.next()) {
//vetor
java.util.Vector pessoas= new java.util.Vector();
do {
//instancia estado
Estado estado = new Estado( rs1.getString("cd_estado") );
//instancia cidade
Cidade cidade = new Cidade( rs1.getInt("cd_cidade")
, rs1.getString("dsc_cidade")
, estado);
//instancia pessoa desaparecida
Pessoa pessoa = new Pessoa( rs1.getInt("cd_pessoa")
, cidade
, rs1.getString("nome")
, rs1.getString("data_desap")
, rs1.getString("foto") );
//adiciona ao vetor
pessoas.add(pessoa);
} while(rs1.next());
return pessoas;
} else return null;
} catch(Exception ex) {
ex.printStackTrace();
return null;
}
}
Não acha nada na pesquisa.
Será que estou fazendo errado.
Tá certo essa parte? ps.setString(1, pess.getNome());
No exemplo acima está apenas com um campo, mas o que estou fazendo ele tem mais de 10 campos.
Qualquer ajuda será bem-vinda.
Valeu!!!