Bom dia pessoal,
Estou com uma dúvida sobre vRaptor.
Peguei em um dos tópicos uma forma (creio que feita pelo Lucas) de se puxar uma lista via JSON para um em uma JSP.
A minha intenção é arrumar alguma forma de deixar a opção da cidade do usuário já marcada ao carregar a página (trata-se de uma pagina de edição). Na opção de Estado eu já consegui, Mas não sei como fazer na de cidade.
Eu queria uma forma de verificar o cidade[i].codigo da lista JSON com o usuario.cidade.codigo, para poder adicionar a opção selected no option.
Na minha Classe UsuarioController, eu tenho o seguinte método:
@Get @Path("/cidade/{uf}")
public void carregaCidades(Integer uf){
List<Cidade> cidadeList = cidadeRepository.cidadesPorEstado(uf);
result.use(Results.json()).from(cidadeList).serialize();
}
Gerando uma lista que pode ser pega via JSON.
Na minha JSP, eu tenho o seguinte Javascript:
<script type="text/javascript">
$(function(){
$('#uf').change(function(){
$('#cidade option').remove();
if ($('#uf').val().length == 0) {
$('#cidade').attr("disabled", true);
}
else {
$('#cidade').attr("disabled", false);
var value = $('#uf').val();
$.ajax({
url: '<c:url value="/cidade/" />'+ value,
dataType: 'json',
success: function(json) {
var cidade = json.list;
for(var i in cidade) {
var option = $('<option value="' + cidade[i].codigo + '">' + cidade[i].nome + '</option>');
option.appendTo('#cidade');
}
}
});
}
});
});
</script>
e Na página, está assim:
<label for="uf">Estado:</label>
<select name="uf" id="uf" size="1">
<option value="">Selecione um estado</option>
<c:forEach items="${ufList}" var="uf"><option value="${ uf.codigo }" <c:if test="${uf.codigo == usuario.cidade.uf.codigo}">selected="true"</c:if>>${ uf.nome }</option>
</c:forEach></select>
<label for="cidade">Cidade:</label>
<select name="cidade" id="cidade" disabled="disabled"></select>
Desde já muito obrigado pessoal!