Boa noite, É possível validar campos vazios de um form ? Seguindo os passos do spring.io (https://spring.io/guides/gs/validating-form-input/) eu cheguei nessa solução: Model:
package br.com.springboot.listavip.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;
@Entity(name= "convidado")
public class Convidado {
@Id
@GeneratedValue
private Long id;
@NotNull
private String nome;
@NotNull
private String email;
@NotNull
private String telefone;
//ggas
}
Controller:
package br.com.springboot.listavip;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import br.com.springboot.listavip.model.Convidado;
import br.com.springboot.listavip.repository.ConvidadoRepository;
@Controller
public class ConvidadoController{
@Autowired
private ConvidadoRepository repository;
@RequestMapping("/")
public String index(){
return "index";
}
@RequestMapping("listaconvidados")
public String listaConvidados(Model model){
Iterable<Convidado> convidados = repository.findAll();
model.addAttribute("convidados", convidados);
return "listaconvidados";
}
@RequestMapping(value= "salvar", method = RequestMethod.POST)
public String salvar(@Valid Convidado novoConvidado, BindingResult bindingResult){
if (bindingResult.hasErrors()) {
return "redirect:listaconvidados";
}
repository.save(novoConvidado);
return "redirect:listaconvidados";
}
@RequestMapping("/informaConvidado{id}")
public String informaConvidado(@RequestParam("id") long id, Model model){
Convidado convidado = repository.findOne(id);
model.addAttribute("convidado", convidado);
return "redirect:listaconvidados";
}
@RequestMapping(value= "/remover{id}", method = RequestMethod.GET)
public String removeConvidado(@RequestParam(name="id") Long id){
repository.delete(id);
return "redirect:listaconvidados";
}
}
Form:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>ListaVIP</title>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<div class="container">
<div id="listaDeConvidados">
<table class="table table-hover">
<thead>
<tr>
<th>Nome</th>
<th>Email</th>
<th>telefone</th>
<th> </th>
</tr>
</thead>
<tr th:each="convidado : ${convidados}">
<td> <span th:text="${convidado.nome}"></span> </td>
<td> <span th:text="${convidado.email}"></span> </td>
<td> <span th:text="${convidado.telefone}"></span> </td>
<td>
<a th:href="@{/remover(id=${convidado.id})}" class="btn btn-danger">Delete</a>
</td>
</tr>
</table>
</div>
<form action="#" th:action="@{salvar}" th:object="${novoConvidado}" method="post" >
<div class="form-group">
<label for="nome">Nome</label>
<input type="text" th:field="*{nome}" class="form-control" id="nome" name="nome" placeholder="Nome" />
<label th:if="${#fields.hasErrors('nome')}" th:errors="*{nome}">Name Error</label>
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="email" class="form-control" id="email" name="email" placeholder="Email" />
</div>
<div class="form-group">
<label for="telefone">Telefone</label>
<input type="text" class="form-control" id="telefone" name="telefone" placeholder="Telefone" />
</div>
<button type="submit" class="btn btn-success">Convidar</button>
</form>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="bootstrap/js/bootstrap.min