Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao tentar passar parametro via url

Estou tentando listar um paciente pelo id passado via Url. No controller criei esse método:

@RequestMapping("lista/{id}")
    public String listaPorId(@PathVariable("id") Long id, Model model) {
        Optional<Paciente> pacientes = pacienteRepository.findById(id);
        model.addAttribute("pacientes", pacientes);
        System.out.println(model.toString());

        return "paciente/lista";
    }

Porém, não consigo listar esse valor na minha página html.

<div class="card mb-3" th:each="paciente : ${pacientes}">
        <a th:href="@{lista/{id}(id=${paciente.id})}"></a>
            <div class="card-header" th:text="${paciente.nome}">Nome do
                Paciente:</div>

Eu até consigo ver o valor no console via System.out.println(model.toString());

O erro gerado é:

{pacientes=Optional[Paciente [id=1, nome=João da Silva, idade=21, endereco=RUA J, cpf=22222, rg=null, telefone=null, possuiPlano=null, codigoPlanoDeSaude=1111, email=joao@email.com, alergias=[Alergia [id=1, alergia=LEITE], Alergia [id=2, alergia=FRUTOS DO MAR]]]]} 2021-01-25 21:32:41.564 ERROR 140584 --- [nio-8080-exec-3] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-3] Exception processing template "paciente/lista": An error happened during template parsing (template: "class path resource [templates/paciente/lista.html]") aused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "paciente.nome" (template: "paciente/lista" - line 22, col 29) at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupParser.parse(MarkupParser.java:257) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] ... 40 common frames omitted Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "paciente.nome" (template: "paciente/lista" - line 22, col 29)

1 resposta
solução!

Resolvido!

Como estou usando o Optional precisei adicionar .get() após pacientes.

@RequestMapping("lista/{id}")
    public String listaPorId(@PathVariable("id") Long id, Model model) {
        Optional<Paciente> pacientes = pacienteRepository.findById(id);
        model.addAttribute("pacientes", pacientes.get());
        System.out.println(model.toString());

        return "paciente/lista";
    }