Para inclusão está ok.
Para alteração, como validar se o país atual é igual a algum da lista. Se sim selecionar e mostrar na tela.
<select id="pais" th:field="*{pais}">
<option value="">Selecione o país</option>
<option th:each="pais : ${paises}" th:value="${pais.id}" th:text="${pais.descricao}" selected="selected"></option>
</select>
Alguma ajuda neste tópico também ?
Provavelmente isso vai te ajudar, precisa trocar:
selected="selected"
por:
th:selected="(${pais.id} == *{paisEdicao.id})"
Onde o paisEdicao
é o pais que deve estar selecionado.
Faz um teste ai.
@wolmirGarbin, obrigado pelo retorno.
Fiz assim e não funcionou:
<option th:each="pais : ${paises}" th:value="${pais.id}" th:selected="(${pais.id} == *{paisEdicao})" th:text="${pais.descricao}"></option>
Aonde paisEdicao, é o país que vem do banco de dados e é preenchido assim, no controller:
@RequestMapping(value = "/editar/{id}", method = RequestMethod.GET)
public ModelAndView editar(@PathVariable("id") Long id) {
logger.info("Editando um bairro");
BairroEntity bairroAtual = bairroServico.buscarPorId(id);
ModelAndView modelAndView = new ModelAndView("bairro/novoEditar");
modelAndView.addObject("bairro", bairroAtual);
modelAndView = novoAlterar(modelAndView);
modelAndView.addObject("paisEdicao", bairroAtual.getPais().getId());
return modelAndView;
}
Debugando o valor está preenchendo corretamente.
O que está errado ?
Opa, tenta mudar para:
th:selected="${pais.id == paisEdicao}"
ou assim:
th:selected="${pais.id eq paisEdicao}"
Fiz um teste rápido e criei um post que mostra uma forma de resolver:
Quaquer dúvida da um grito!
Não funcionou.
th:selected="${pais.id == paisEdicao}"
th:selected="${pais.id eq paisEdicao}"
no Html fiz isto: <label th.text="${paisEdicao}">
, e não está imprimindo nada.
Provavelmente seu problema está no seu controller, o que faz o método?
Inclui mais itens para a view. Lista para preencher o select no html.
private ModelAndView novoAlterar(ModelAndView modelAndView) {
List<PaisEntity> paises = paisServico.listar();
List<EstadoEntity> estados = estadoServico.listar();
List<MunicipioEntity> municipios = municipioServico.listar();
modelAndView.addObject("paises", paises);
modelAndView.addObject("estados", estados);
modelAndView.addObject("municipios", municipios);
return modelAndView;
}
O retorno para o HTML era o objeto.
Criei um DTO que recebe o LONG do objeto escolhido, isto é, o ID. Ai funcionou.
Boa tarde guilhermebhte poderia explicar melhor o que você construiu eu estou na mesma duvida poderia ajudar?
1 curtida
Este projeto passamos ele para Angular. Assim, não trabalhamos mais com ModelAndView.