Spring-MVC-eleaf错误模板覆盖内联表单错误消息

Spring-MVC-eleaf错误模板覆盖内联表单错误消息,spring,forms,validation,spring-mvc,thymeleaf,Spring,Forms,Validation,Spring Mvc,Thymeleaf,我正在验证表单,并使用Thymeleaf显示未通过验证的字段的内联错误。我使用的是Spring Boot 1.5.8 我有一个将绑定到表单的用户对象。它有如下字段:用户名和电子邮件。这是申报表 <form role="form" class="form" method="post" th:action="@{'/admin/user/new'}" th:object="${user}"> 对于这个例子,我只是尝试验证email字段,如果验证失败,则在该字段旁边显示一条消息。

我正在验证表单,并使用Thymeleaf显示未通过验证的字段的内联错误。我使用的是Spring Boot 1.5.8

我有一个将绑定到表单的用户对象。它有如下字段:用户名和电子邮件。这是申报表

<form role="form" class="form" method="post"
    th:action="@{'/admin/user/new'}" th:object="${user}">
对于这个例子,我只是尝试验证email字段,如果验证失败,则在该字段旁边显示一条消息。类字段在用户上看起来像这样

Thymeleaf场是这样的

<div th:fragment="email" class="form-group">
    <label>Email*</label>
    <input class="form-control" type="text" th:field="*{email}" th:required="required" />
    <span class="error" th:if="${#fields.hasErrors('email')}" th:errors="*{email}">...</span>
</div>
@GetMapping("admin/user/new")
public String newUser(Model model, HttpServletRequest request) {
    model.addAttribute("user", new User());
    return "admin/user/new";
}
@PostMapping("admin/user/new")
public String newUser(@Valid @ModelAttribute User user, final ModelMap model, BindingResult bindingResult) {
    Assert.notNull(user, "User must not be null");
    if (bindingResult.hasErrors()) {
        return "admin/user/new";
    }
    userService.save(user);
    model.clear();
    return "redirect:/admin/user/list";
}
相应的POST方法如下所示

<div th:fragment="email" class="form-group">
    <label>Email*</label>
    <input class="form-control" type="text" th:field="*{email}" th:required="required" />
    <span class="error" th:if="${#fields.hasErrors('email')}" th:errors="*{email}">...</span>
</div>
@GetMapping("admin/user/new")
public String newUser(Model model, HttpServletRequest request) {
    model.addAttribute("user", new User());
    return "admin/user/new";
}
@PostMapping("admin/user/new")
public String newUser(@Valid @ModelAttribute User user, final ModelMap model, BindingResult bindingResult) {
    Assert.notNull(user, "User must not be null");
    if (bindingResult.hasErrors()) {
        return "admin/user/new";
    }
    userService.save(user);
    model.clear();
    return "redirect:/admin/user/list";
}
在这个POST方法中,我检查BindingResult是否有错误。如果是这样,我希望admin/user/new模板显示内联错误消息。但是,正在呈现“捕获所有错误”模板。URL仍然显示/admin/user/new,刷新页面时仍然显示错误模板

我的主要问题是,如果可能的话,如何使用“捕获所有错误”页面并在需要时仍然显示内联错误?

我认为BindingResult需要直接跟随参数列表中的有效注释参数


我想试一试

在html视图中使用它怎么样

<div th:if="${param.error}"
     th:text="${session['SPRING_SECURITY_LAST_EXCEPTION'].message}">
</div>

谢谢你@benashby这正是问题所在。我将签名更改为公共字符串newUser@Valid@modeldattribute用户,BindingResult BindingResult,最终模型映射模型{