Bem, possuo um combobox de estade e cidade pronto e funcionando, atualmente se encontram assim:
no name="visitante.endereco.cidade.estado"
é passado o objeto que receberá o value, porem o value é o id, que nao é um objeto, como recuperar isso?
pagina formulario.jsp:
<%@ page contentType="text/html; charset=UTF-8" %>
<script>
$(document).ready(function(){
$('#estadosSelect').on('change', function(){
var self = $(this);
var selecionado = self.val(); // pega o ID do estado
$.ajax({
url:'<c:url value="/visitante/carregaCidades/" />'+ selecionado,
//data:{estado:selecionado}, // Passa a variável ao server. O nome do parâmetro tem que ser estado, pois foi o nome colocado aqui.
dataType:'json', // O Server vai retornar um JSON
success:function(data){
// Precisa transformar de json para objeto html
var options = [];
options.push(' <option>Selecione</option> '); // colocando a primeira option...
for (var i = 0; i < data.length; i++) {
options.push('<option value="'+data[i].codigo+'">'+data[i].nome+'</option>');
}
// Agora precisa juntar esses options dentro da combo de cidades
$('#cidadesSelect').html(options.join(''));
},
error:function(){
//alert('erro');
}
});
});
});
</script>
<div>
<form action="salvar" method="post">
<fieldset>
<legend>Adicionar Visitante</legend>
<label for="nome">Nome:</label>
<input id="nome" type="text" placeholder="nome" name="visitante.nome"/>
<label for="rua">Rua:</label>
<input id="rua" type="text" placeholder="rua" name="visitante.endereco.logradouro" style="display: block;" />
<fieldset style="display: inline;">
<label for="descricao">estado:</label>
<select id="estadosSelect" name="visitante.endereco.cidade.estado" style="width: 60px;">
<option value="disable">UF</option>
<c:forEach items="${estadoList}" var="estado">
<option value="${estado.codigo}">${estado.sigla}</option>
</c:forEach>
</select>
</fieldset>
<fieldset style="display: inline;">
<label for="cidade">cidade:</label>
<select id="cidadesSelect" name="visitante.endereco.cidade">
<option>Selecione</option>
</select>
</fieldset>
<br/>
<button type="submit" class="btn">Salvar</button>
</fieldset>
</form>
</div>
como vocês podem ver, o value do estado é o .id, e apos a requisiçao em ajax ele monta o combobox de cidade, tbm passando o id, só que eles tao Setando um ID em um Objeto, e quando vou debugar os objetos nao vem com esses ID’s, como faço pra recuperar?
meu controllador:
public void salvar(Visitante visitante) {
Integer codigo = visitante.getCodigo();
if(codigo == null|| codigo == 0) {
this.visitanteRep.save(visitante);
} else {
this.visitanteRep.update(visitante);
}
result.redirectTo(this).listar();
}