Boa noite pessoal! Preciso de uma ajuda de vocês. Tenho uma página composta por um formulário e por uma lista(table) que exibe os itens já cadastrados. Quando clico em uma linha da tabela carrego no formulário os dados do registro. No formulário tenho uma lista de checkbox. Quando clico em uma linha da tabela carrego os dados no formlário, porém não marca os checkbox que foram selecionados no momento do cadastro do registro.
Segue abaixo o código do jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<c:if test="${not empty errors}">
<c:forEach items="${errors}" var="error">
${error.category} - ${error.message}<br />
</c:forEach>
</c:if>
<form action="${linkTo[AcomodacaoController].salvar}" method="post" class="ajaxForm">
<fieldset>
<legend>Cadastro de Acomodação</legend>
<br/>
<div style="float: left; width: 50%;">
<p>
<input type="hidden" name="acomodacao.id" value="${acomodacao.id}" />
<label for="txtNumero">Número: *</label>
<input type="text" id="txtNumero" name="acomodacao.numero" value="${acomodacao.numero}" maxlength="255" autofocus="autofocus" class="input_text required" />
</p>
<p>
<label for="txtNrQuartos">Nr Quartos: *</label>
<input type="text" id="txtNrQuartos" name="acomodacao.nroDeQuartos" value="${acomodacao.nroDeQuartos}" maxlength="10" class="input_text required" />
</p>
<p>
<label for="txtOcupacao">Cap Ocupação:</label>
<input type="text" id="txtOcupacao" name="acomodacao.capacidadeOcupacao" value="${acomodacao.capacidadeOcupacao}" maxlength="10" />
</p>
<p>
<label for="txtMaxima">Cap Máxima:</label>
<input type="text" id="txtMaxima" name="acomodacao.capacidadeMaxima" value="${acomodacao.capacidadeMaxima}" maxlength="10" />
</p>
<p>
<label for="txtObs">Observações:</label>
<textarea rows="5" cols="20" name="acomodacao.observacao" class="input_text">${acomodacao.observacao}</textarea>
</p>
</div>
<div style="float: right; width: 49%;">
<label for="txtCaracteristica">Características: *</label><br/><br/>
<c:forEach items="${acomodacao.listaCaracteristicas}" var="caracteristica" varStatus="s">
<input type="checkbox" name="caracteristica[${s.index}].id"
value="${caracteristica.id}" ${caracteristica.checked}></input>
${caracteristica.tipo}<br/>
</c:forEach>
<label for="txtTipoAcomodacao">Tipo Acomodação: *</label><br/><br/>
<c:forEach items="${acomodacao.listaTipoAcomodacao}" var="tipoAcomodacao"
varStatus="t">
<input type="radio" name="tipoAcomodacao.id"
value="${tipoAcomodacao.id}" ${tipoAcomodacao.checked}></input>
${tipoAcomodacao.tipo}
<br />
</c:forEach>
</div>
<div style="float: right; width: 100%;">
<br/><br/><br/>
<button type="submit" class="btnSalvar">Salvar</button>
<button id="btnPesquisar" class="btnPesquisar" type="submit" >Pesquisar</button>
<button type="submit" class="btnExcluir" >Excluir</button>
<button id="btnCancelar" class="btnCancelar" type="reset" >Cancelar</button>
</div>
</fieldset>
</form>
Segue abaixo o código do método do Controller:
@Get("/acomodacao/{id}")
public void form(Long id){
final Acomodacao acomodacao = acomodacoes.obter(id);
List<Caracteristica> listaCaracteristicas = caracteristicas.listar();
List<TipoAcomodacao> listaTipoAcomodacao = tiposDeAcomodacoes.listar();
for(Caracteristica c : acomodacao.getCaracteristicas()){
for(Caracteristica cc : listaCaracteristicas){
if(c.getId() == cc.getId()){
cc.setChecked("checked");
}
}
}
for(TipoAcomodacao ta : listaTipoAcomodacao ){
if(acomodacao.getTipoAcomodacao().getId() == ta.getId()){
ta.setChecked("checked");
}
}
acomodacao.setListaCaracteristicas(listaCaracteristicas);
acomodacao.setListaTipoAcomodacao(listaTipoAcomodacao);
result.use(Results.json()).from(acomodacao).include("listaCaracteristicas", "listaTipoAcomodacao").serialize();
}
Segue em anexo a imagem com a resposta da chamada.