Preciso de uma ajuda para verificar o checkbox, só que ele não faz parte do meu objeto phones
//jsp
<input type="checkbox" name="checkbox[${i.index}].ativo" checked="checked">
:
:
Como faço para passar o checkbox no controller e listar os objetos que estiverem com o checked true?
//controller
@Public @Post({"/xx/add"})
public void add(List<PhoneAuthenticated> phones, UserSiter user) {
System.out.println("user.getEmail(): "+ user.getEmail());
System.out.println("---------------------------------------------------------------------------------------");
for (PhoneAuthenticated phoneAuthenticated : phones) {
System.out.println("phoneAuthenticated.getName(): "+ phoneAuthenticated.getName());
System.out.println("phoneAuthenticated.getCountry().getId(): "+ phoneAuthenticated.getCountry().getId());
System.out.println("phoneAuthenticated.getNumber(): "+ phoneAuthenticated.getNumber());
System.out.println("---------------------------------------------------------------------------------------");
}
}
já tentou usar:
<input type="checkbox" name="phones[${i.index}].ativo" checked="checked">
?
OK!
Mas como vou recuperar o valor do checkbox, se ele não esta declarado na classe, pois esse item não é uma característica do objeto phones.
ahm…
nesse caso, o melhor seria fazer isso no javascript…
tipo se vc selecionar o checkbox, todos os inputs relacionados ao phone ficam habilitados, mas se deselecionar todos esses inputs ficam com disabled=true…
é razoavelmente fácil de fazer.
Resolvi da seguinte forma, só não sei se é a melhor…
//jsp
<input type="checkbox" name="checkbox" value="${i.index}" checked="checked">
:
:
//controller
public void add(List<PhoneAuthenticated> phones, UserSiter user, String[] checkbox) {
System.out.println("user.getEmail(): "+ user.getEmail());
System.out.println("---------------------------------------------------------------------------------------");
Integer[] anArray;
anArray = new Integer[phones.size()];
Integer i = 0;
for (String string : checkbox) {
anArray[Integer.parseInt(string)] = 1;
}
Integer j = 0;
for (PhoneAuthenticated phoneAuthenticated : phones) {
phoneAuthenticated.getName();
phoneAuthenticated.getCountry().getId();
phoneAuthenticated.getNumber();
if(anArray[j] != null && anArray[j] == 1){
System.out.println("phoneAuthenticated.getName(): "+ phoneAuthenticated.getName());
System.out.println("phoneAuthenticated.getCountry().getId(): "+ phoneAuthenticated.getCountry().getId());
System.out.println("phoneAuthenticated.getNumber(): "+ phoneAuthenticated.getNumber());
System.out.println("---------------------------------------------------------------------------------------");
}
j++;
}
result.redirectTo(this).xx();
}
em javascript fica mais bonito
mas tudo bem…
vc pode receber uma List ao invés de String[]