如何将javax.validation与Thymeleaf一起使用

如何将javax.validation与Thymeleaf一起使用,validation,thymeleaf,Validation,Thymeleaf,当我运行此程序时,如果有效,它将创建一本新书,但一旦出现错误,它将不会发回页面,我将得到400: This application has no explicit mapping for /error, so you are seeing this as a fallback. There was an unexpected error (type=Bad Request, status=400). Validation failed for object='book'. Error cou

当我运行此程序时,如果有效,它将创建一本新书,但一旦出现错误,它将不会发回页面,我将得到400:

This application has no explicit mapping for /error, so you are seeing this as   a fallback.
There was an unexpected error (type=Bad Request, status=400).
Validation failed for object='book'. Error count: 4
我用system outs进行了测试,如果它有错误,它永远不会提交,我想也许@Valid是错误的,或者??? 这是我的控制器。。。请告诉我少了什么

@Controller
@RequestMapping("/")
public class BookController{

@RequestMapping(method=RequestMethod.GET)
public String home(Model model) {

    refData = new ReferenceData();
    model.addAttribute("refData", refData);

    model.addAttribute("book", new Book());

    List<Book> books = BookRepo.findAll();
    model.addAttribute("books", books);

    return "home";
}   

@RequestMapping(method=RequestMethod.POST)
public String submit(@Valid Book book,Model model, BindingResult bindingResult) {

    refData = new ReferenceData();
    model.addAttribute("refData", refData);

    if (bindingResult.hasErrors()) {
        return "home";
    }

    BookRepo.save(book);
    return "redirect:/";
}

我发现我必须将bindingResult直接放在@Valid Book实体之后,因此

@RequestMapping(method=RequestMethod.POST)
public String submit(@Valid Book book,**BindingResult bindingResult**, Model model ) {


    refData = new ReferenceData();
    model.addAttribute("refData", refData);

    if (bindingResult.hasErrors()) {
        return "home";
    }


    BookRepo.save(book);
    return "redirect:/";
}
哇,多小的错误啊

约翰尼O

@Entity
public final class Book
{

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

@NotNull
@Pattern(regexp="^[a-zA-Z0-9_]+$")
private String title;

@NotNull
@Pattern(regexp="^[a-zA-Z0-9_]+$")
private String author;

@NotNull
@Pattern(regexp="^[a-zA-Z0-9_]+$")
private String genre;


@NotNull
@Digits(message="message here", integer=32767, fraction = 0)
private Integer pages;

private String year;
private String rating;
@RequestMapping(method=RequestMethod.POST)
public String submit(@Valid Book book,**BindingResult bindingResult**, Model model ) {


    refData = new ReferenceData();
    model.addAttribute("refData", refData);

    if (bindingResult.hasErrors()) {
        return "home";
    }


    BookRepo.save(book);
    return "redirect:/";
}