Select no thymeleaf

12 respostas Resolvido
thymeleafjavaspring
guilhermebhte

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>

12 Respostas

guilhermebhte

Alguma ajuda neste tópico também ?

wolmirGarbin

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.

guilhermebhte

@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 ?

wolmirGarbin

Opa, tenta mudar para:

th:selected="${pais.id == paisEdicao}"

ou assim:

th:selected="${pais.id eq paisEdicao}"

wolmirGarbin

Fiz um teste rápido e criei um post que mostra uma forma de resolver:

Quaquer dúvida da um grito!

guilhermebhte

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.

wolmirGarbin

Provavelmente seu problema está no seu controller, o que faz o método?

guilhermebhte

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;
}
guilhermebhte

Alguma idéia ?

guilhermebhte
Solucao aceita

O retorno para o HTML era o objeto.
Criei um DTO que recebe o LONG do objeto escolhido, isto é, o ID. Ai funcionou.

Mayk_Lucas

Boa tarde guilhermebhte poderia explicar melhor o que você construiu eu estou na mesma duvida poderia ajudar?

guilhermebhte

Este projeto passamos ele para Angular. Assim, não trabalhamos mais com ModelAndView.

Criado 27 de agosto de 2017
Ultima resposta 26 de jul. de 2021
Respostas 12
Participantes 3