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.
david.cs20
Nao estou conseguindo passar a lista para o controller:
Controller: public void busca(List<Dispositivo> dispositivo) {
...
}
Rafael_Guerreiro
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>
david.cs20
Eu tentei dessa maneira porem ele nao vai para o metodo no controller.
faltou esse nome do controller… ou colocar @Get("/busca") no método
Rafael_Guerreiro
Vai tudo vazio?
Ou ele nem chega a executar a action?
david.cs20
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<Dispositivo> dispositivo) {
List<Dispositivo> teste = dispositivo;
System.out.print(teste);
}
Lucas_Cavalcanti
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:
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?
david.cs20
Estou querendo setar o patrimônio do Dispositivo.
E através desse lista fazer uma consulta no banco de dispositivos com esses patrimônios.
Lucas_Cavalcanti
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.
david.cs20
Acho que não soube me explicar corretamente.
Patrimônio e uma estancia da entidade Dispositivo !
@EntitypublicclassDispositivo{@Id@GeneratedValueprivateLongid;privateStringpatrimonio;privateStringfabricante;privateStringmodelo;..//Get's e Set's }
Lucas_Cavalcanti
então, se os getters e setters estão de acordo, os checkboxes deveriam ser:
e o método do controller deveria receber uma List chamada dispositivo.
está exatamente assim no seu código?
david.cs20
Consegui passar a lista para o controler da seguinte maneira no form:
<form action="${pageContext.request.contextPath}/dispositivo/busca" method="post">
<c:forEach items="${dispositivoList}" var="dispositivo" varStatus="status">
<tr>
<td><input type="checkbox" name="dispositivo[${status.index}].id" value="${dispositivo.id}"></td>
<td id="patrimonio">${dispositivo.patrimonio}</td>
</tr>
</c:forEach>
<button type="submit" class="bt_cadastrarDispositivo">Pesquisar</button>
</form>
public void busca(List<Dispositivo> dispositivo) {
List<Dispositivo> teste = dispositivo;
System.out.print(teste);
}