Checkbox + list no vraptor

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 :wink: mas tudo bem…

vc pode receber uma List ao invés de String[]