Passagem de dois parametros usando o VRaptor![Resolvido]

Olá gente,

Estou precisando passar mais de um atributo para fazer uma busca, estou fazendo dessa forma:

[code]
// cidade/edita.jsp

	<tr>
		<td colspan="3"> Busca<SELECT NAME="tipoBusca"
			ID="tipoBuscaid">
			<OPTION VALUE="nome">1- Cidade</OPTION>
			<OPTION VALUE="uf">2- UF</OPTION>
			<OPTION VALUE="codIbgeCidade">3- Código IBGE Cidade</OPTION>
			<OPTION VALUE="codIbgeUf">4- Código IBGE Estado</OPTION>
		</SELECT></td>
		<td colspan="2">
		
		<form action="<c:url value="/cidade/busca"/>"><input
			name="nomeInput" /></form>		
		</td>
	</tr>[/code]

sendo que eu preciso passar o “tipoBusca” e o “nameInput”

daí na minha classe CidadeController:

	public List<Cidade> busca(String nomeInput,String tipoBusca) {
		
		result.include("nome", nomeInput);
		return dao.busca(nomeInput,tipoBusca);
	}

e na minha classe CidadeDao:

[code]
public List busca(String nome, String tipoBusca) {
if(tipoBusca.equals(“name”)){
return session.createCriteria(Cidade.class).add(Restrictions.ilike(“nome”, nome, MatchMode.ANYWHERE))
.list();
}else if (tipoBusca.equals(“uf”)) {
return session.createCriteria(Cidade.class).add(Restrictions.ilike(“uf”, nome, MatchMode.ANYWHERE))
.list();
}else if (tipoBusca.equals(“codIbgeCidade”)) {
return session.createCriteria(Cidade.class).add(Restrictions.ilike(“codibgecidade”, nome, MatchMode.ANYWHERE))
.list();

	}else  {
		return session.createCriteria(Cidade.class).add(Restrictions.ilike("codibgeuf", nome, MatchMode.ANYWHERE))
		.list();
	}	
	
}	[/code]

bom… o problema eh que o “tipoBusca”, esta vindo NULL…
o que eu preciso fazer para que ele venha preenchido?

outra coisa, se alguém souber q um jeito mais ELEGANTE de se fazer essa busca, me da um Toque! ;D

desde já

Obrigada!

Só colocar o dentro do form.
Componentes fora da tag não são submetidos para sua respectiva action.

Uma dica é você utilizar HQL para montar suas buscas personalizadas, evitando assim um monte de if no seu DAO.

Era isso mesmo Washington!!

=)

obrigada!

e vou dar um pesquisada sobre HQL, realmente eu não gostei desse monte de if!

=)

Ao invés do HQL use:

[code]public List busca(String nome, String tipoBusca) {
Criteria c = session.createCriteria(Cidade.class);
if(tipoBusca.equals(“name”)){
c.add(Restrictions.ilike(“nome”, nome, MatchMode.ANYWHERE));

}else if (tipoBusca.equals("uf")) {
    c.add(Restrictions.ilike("uf", nome, MatchMode.ANYWHERE));

}else if (tipoBusca.equals("codIbgeCidade")) {
    c.add(Restrictions.ilike("codibgecidade", nome, MatchMode.ANYWHERE));

}else  {
    return session.createCriteria(Cidade.class).add(Restrictions.ilike("codibgeuf", nome, MatchMode.ANYWHERE));
}

return c.list();		

}[/code]

Ou também dê uma olhada no findByExample.

Obrigada Garcia pela dica =)

vou fazer assim por enquanto