Enviando checkbox checados para o controlador[RESOLVIDO]

3 respostas
Pedro_Damaso

Olá pessoal, estou com o seguinte problema.

Na minha página são criados checkboxes dinamicos, só que não estou conseguindo enviar para o controlador os checkboxes checados, ele recupera só que porém recupera como nulo…

<div class="surroundDiv">
			<label class="FieldLabel" for="MeiosDeComunicacao">Meios de Comunicação Utilizados:</label>
			
			<c:forEach items="${meiosComunicacaoList}" var="meiosComunicacao">
				<tr>
					<td>
						<input type="checkbox" name="meiosComunicacao.idMeiosComunicacao" 
							value="${meiosComunicacao.idMeiosComunicacao}" id="meiosdecomunicacao">${meiosComunicacao.descricao}
					</td> 
				</tr>
			</c:forEach>
		</div>

Na controller:

public void dadosFamilia(Familia familia, Set<MeiosComunicacao> meiosComunicacao){
	   // ...
	}

Se alguem puder dar uma força aew agradeço … :thumbup:

3 Respostas

david_ware

Olá Pedro,
Vc está utilizando jsf?
se sim:
Em primeiro lugar, aconselho vc a declarar uma lista em um ManagedBean (não direto no controller), p. ex: se o nome da lista fosse meiosComunicacaoList, referenciaria assim: #{NomeBean.meiosComunicacaoList}…
Outra coisa importante: Ao utilizar jsf, use uma das tags de jsf ao invés de html puro no input…
PS.: Esse código aí está dentro de uma tag form, certo? Caso contrário, não irá funcionar… poste todo o código da página, para ficar mais fácil entender e te ajudar :wink:

Abrass :thumbup:

Pedro_Damaso

Estou utilizando jsp, sim ele está dentro de uma tag form … ;D

Pedro_Damaso

Olá pessoal, passando para deixar a solução que encontrei.

De inicio vou receber no controlador uma List<> e não um Set<> igual estava fazendo.

@Post public void dadosFamilia(Familia familia, List<MeiosComunicacao> comunicacaoList){ .... }

Na minha pagina criei um varStatus para funcionar como indice para cada item da lista que ia ser passado para o controlador e também estava faltando passar o id de cada item então ficou assim:

<div class="surroundDiv"> <label class="FieldLabel">Meios de Comunicação Utilizados:</label> <c:forEach items="${meiosComunicacaoList}" var="meiosComunicacao" varStatus="s"> <tr> <td> <input type="checkbox" name="comunicacaoList[${s.index}].idMeiosComunicacao" value="${meiosComunicacao.idMeiosComunicacao}"/> ${meiosComunicacao.descricao} </td> </tr> </c:forEach> </div>

Obrigado pela ajuda david_ware … :thumbup:

Espero ajudar mais alguem … :thumbup:

Criado 7 de janeiro de 2012
Ultima resposta 11 de jan. de 2012
Respostas 3
Participantes 2