Pesquisar vários valores ao mesmo tempo + Vraptor + Hibernate

Tenho um método de pesquisa a qual busca um dispositivo via o numero do patrimônio.

	// Buscar Dispositivos
	@SuppressWarnings("unchecked")
	public List<Dispositivo> busca(String patrimonio) {
		return getTemplate().findByCriteria(
				DetachedCriteria.forClass(Dispositivo.class).add(
						Restrictions.ilike("patrimonio", patrimonio,
								MatchMode.ANYWHERE)));
	}

Porem gostaria de selecionar vários patrimônios ao mesmo tempo e ter vários resultados ao mesmo tempo ?

Receba uma lista de patrimonio e retorne um mapa com chave e valor.
Cada chave desse mapa é um patrimonio e o valor correspondente é uma lista de dispositivos para esse patrimonio.

Nao estou conseguindo passar a lista para o controller:

Formulario: <form action="${pageContext.request.contextPath}/busca" method="post"> <c:forEach items="${dispositivoList}" var="dispositivo"> <tr> <td><input type="checkbox" name="patrimonio" value="${dispositivo.patrimonio}"> </td> <td id="patrimonio">${dispositivo.patrimonio}</td> </tr> </c:forEach> <button type="submit" class="bt_cadastrarDispositivo">Pesquisar</button> </form>

Controller: public void busca(List<Dispositivo> dispositivo) { ... }

O problema é por que o nome deles estão diferentes.
No campo name do seu checkbox deve ser o mesmo que o parâmetro que você está recebendo.

<form action="${pageContext.request.contextPath}/busca" method="post"> <c:forEach items="${dispositivoList}" var="dispositivo" varStatus="status"> <tr> <td><input type="checkbox" name="dispositivo[${status.index}].patrimonio" value="${dispositivo.patrimonio}"> </td> <td id="patrimonio">${dispositivo.patrimonio}</td> <!-- //Cuidado com essa linha pois você está setando o mesmo ID para vários TDs, em alguns browsers isso dá pau.--> </tr> </c:forEach> <button type="submit" class="bt_cadastrarDispositivo">Pesquisar</button> </form>

Eu tentei dessa maneira porem ele nao vai para o metodo no controller.

na action do form:

action="${pageContext.request.contextPath}/<nomeDoController>/busca"

faltou esse nome do controller… ou colocar @Get("/busca") no método

Vai tudo vazio?

Ou ele nem chega a executar a action?

Entao esta indo tudo nullo para o controller.

O metodo abaixo e so para ver o que esta chegando no controller:

@Get public void busca(List&lt;Dispositivo&gt; dispositivo) { List&lt;Dispositivo&gt; teste = dispositivo; System.out.print(teste); }

pra preencher essa lista, algum checkbox precisa estar selecionado, e os checkboxes precisam estar com os names e values de acordo com o que vc quer setar:

<input type="checkbox" name="dispositivo[${status.index}].patrimonio.id" value="${dispositivo.patrimonio.id}"> 

isso se vc tá setando o id do patrimonio… ou patrimonio é o id do dispositivo?

do jeito que vc tá fazendo tanto o name qto o value deveriam usar o id do dispositivo?

Estou querendo setar o patrimônio do Dispositivo.
E através desse lista fazer uma consulta no banco de dispositivos com esses patrimônios.

se patrimônio é uma entidade, vc tem que setar o id dele… o ${dispositivo.patrimonio} não coloca o patrimonio no input, coloca o toString() dele… vc precisa trabalhar sempre com ids, qdo vc tá brincando com entidades.

Acho que não soube me explicar corretamente.
Patrimônio e uma estancia da entidade Dispositivo !

[code]@Entity
public class Dispositivo {

@Id
@GeneratedValue
private Long id;
private String patrimonio;
private String fabricante;
private String modelo;
..

//Get’s e Set’s
}[/code]

então, se os getters e setters estão de acordo, os checkboxes deveriam ser:

    <input type="checkbox" name="dispositivo[${status.index}].patrimonio" value="${dispositivo.patrimonio}">   

e o método do controller deveria receber uma List chamada dispositivo.

está exatamente assim no seu código?

Consegui passar a lista para o controler da seguinte maneira no form: &lt;form action="${pageContext.request.contextPath}/dispositivo/busca" method="post"&gt; &lt;c:forEach items="${dispositivoList}" var="dispositivo" varStatus="status"&gt; &lt;tr&gt; &lt;td&gt;&lt;input type="checkbox" name="dispositivo[${status.index}].id" value="${dispositivo.id}"&gt;&lt;/td&gt; &lt;td id="patrimonio"&gt;${dispositivo.patrimonio}&lt;/td&gt; &lt;/tr&gt; &lt;/c:forEach&gt; &lt;button type="submit" class="bt_cadastrarDispositivo"&gt;Pesquisar&lt;/button&gt; &lt;/form&gt;

public void busca(List&lt;Dispositivo&gt; dispositivo) { List&lt;Dispositivo&gt; teste = dispositivo; System.out.print(teste); }