Olá, Estou com um problema que não consigo arrumar. Estou fazendo um projeto paralelo e idêntico ao do curso, apenas para praticar. Quando os campos obrigatórios são preenchidos ok, mas quando é feita a validação é lançado um erro. Obs: Quando o método retorna "return "redirect:/gestao/formulario" não da erro, porém perco as mensagens de erro na tela pelo fato de ser feita uma nova requisição. Quando o método retorna "gestao/formulario" ou "/gestao/formulario" é lançado uma exception. Segue o código:
package br.com.futebol.controller;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import br.com.futebol.model.Jogador;
import br.com.futebol.model.StatusPagamento;
import br.com.futebol.repository.JogadorRepository;
@Controller
@RequestMapping("gestao")
public class JogadorController {
@Autowired
private JogadorRepository jogadorRepository;
@GetMapping
public String home(Model model)
{
Iterable<Jogador> jogadores = jogadorRepository.findAll();
model.addAttribute("jogadores", jogadores);
return "home";
}
@GetMapping("formulario")
public String formulario(Jogador jogador)
{
return"cadastrarjogador";
}
@RequestMapping( value = "novo" , method = RequestMethod.POST)
public String novo(@Valid Jogador jogador, BindingResult result, RedirectAttributes attributes)
{
if(result.hasErrors())
{
return "/gestao/formulario";
}
jogador.setStatusPagamento(StatusPagamento.NAO);
jogadorRepository.save(jogador);
attributes.addFlashAttribute("sucesso", "O jogador " + jogador.getApelido() + " foi cadastrado com sucesso!!");
return "redirect:/gestao";
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
crossorigin="anonymous">
<title>Cadastro de jogadores</title>
</head>
<body>
<div class="container">
<div class="jumbotron mt-3 mb-3">
<h1 class="display-4">Novo Jogador</h1>
<p class="lead">Cadastro de novo jogador.</p>
</div>
<div class="card">
<form th:object="${jogador}" method="post" action="/gestao/novo" class="card-body">
<div class="form-group">
<input class="form-control form-control-lg mb-2" type="text"
placeholder="Nome" th:field="*{nome}" th:errorclass="is-invalid"/>
<div class="invalid-feedback" th:errors="*{nome}"> </div>
</div>
<div class="form-group">
<input
class="form-control form-control-lg mb-2" type="text"
placeholder="Apelido" th:field="*{apelido}" th:errorclass="is-invalid"/>
<div class="invalid-feedback" th:errors="*{apelido}"> </div>
</div>
<div class="form-group">
<input
class="form-control form-control-lg mb-2" type="date"
style="width: 220px" th:field="*{dataNascimento}" />
</div>
<div class="form-group">
<input
class="form-control form-control-lg mb-2" type="text"
placeholder="Telefone" th:field="*{telefone}" style="width: 150px" th:errorclass="is-invalid"/>
<div class="invalid-feedback" th:errors="*{telefone}"> </div>
</div>
<div class="form-group">
<input
class="form-control form-control-lg mb-2" type="text"
placeholder="Endereço" th:field="*{endereco}" style="width: 220px" />
</div>
<button type="submit" class="btn btn-info">Cadastrar</button>
</form>
</div>
</div>
</body>
</html>
`
org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/gestao/formulario], template might not exist or might not be accessible by any of the configured Template Resolvers