Spring-MVC-eleaf错误模板覆盖内联表单错误消息
我正在验证表单,并使用Thymeleaf显示未通过验证的字段的内联错误。我使用的是Spring Boot 1.5.8 我有一个将绑定到表单的用户对象。它有如下字段:用户名和电子邮件。这是申报表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字段,如果验证失败,则在该字段旁边显示一条消息。
<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,最终模型映射模型{