Olá pessoal, boa noite!
Estou tentando utilizar o combobox no cadastro de usuario, para gravar a cidade. Já estou conseguindo fazer a listagem e gravar a cidade selecionada no cadastro do usuário.
O problema é na hora de EDITAR... na tela de listagem, clico em um usuário pra editar e traz sempre a primeira cidade da lista e deveria trazer a cidade cadastrada (a cidade que está gravada no registro desse usuário que vem do banco de dados).
Estava tentando com o if ternário e algumas outras opções, mas ta sempre faltando alguma coisa e não vem. E não consigo acompanhar pelo modo de debug quando esse combobox é preechido.
Segue o código:
public class UsuarioController {
private UsuarioDao UsuarioDao;
private Result result;
private Validator validator;
private cidadeDao cidadeDao;
public UsuarioController(){}
@Inject
public UsuarioController(UsuarioDao UsuarioDao, Result result, Validator validator, cidadeDao cidadeDao){
this.UsuarioDao = UsuarioDao;
this.result = result;
this.validator = validator;
this.cidadeDao = cidadeDao;
}
public void form(){
result.include("cidades", cidadeDao.lista());
}
@IncludeParameters
public void adiciona(@Valid Usuario usuario){
validator.onErrorRedirectTo(this).form();
UsuarioDao.adiciona(usuario);
result.redirectTo(this).lista();
}
public void lista(){
List<Usuario> usuarios = UsuarioDao.lista();
result.include("usuarios", usuarios);
}
public void editar(int id, Result result){
Usuario usuarioEncontrada = UsuarioDao.pegaPorId(id);
result.include(usuarioEncontrada);
result.include("cidades", cidadeDao.lista());
result.of(this).form();
}
Form.jsp (do cadastro do usuário)
<form action="${linkTo[UsuarioController].adiciona(null)}" method="post">
<input type="hidden" name="usuario.id" value="${usuario.id}"/>
<div class="form-group">
<label for="titulo">Nome do Usuário</label>
<input type="text" name="usuario.nome" id="nome" class="form-control" value="${usuario.nome}"/>
<tag:validationMessage name="usuario.titulo"/>
<div class="form-group">
<label for="cidades">Selecione uma cidade:</label>
<select id="cidades" name="usuario.cidade.id" class="form-control">
<c:forEach var="c" items="${cidades}">
<option value="${c.id}"> ${c.nome}</option>
</c:forEach>
</select>
</div>
<tag:validationMessage name="usuario.cidade"/>
</div>
</form>
abraços.