我想在我的 jsp 页面中显示验证错误。
我的目标是:
public class MyObjectDTO{ @valid private TextDTO text1; @valid private TextDTO text2 }
public class TextDTO{ @NotBlank private String code;@NotBlank private String label;}
我的 Controller :
@RequestMapping(value = "/create", method = RequestMethod.POST)
public String creationProjet(@Valid @ModelAttribute MyObjectDTO obj, BindingResult result,
Model model) {
if (result.hasErrors()) {
model.addAttribute("hasErrors", true);
return "create";
} else {
....
return "redirect:/list";
}
}
我的jsp
<div class="col-md-6 form-group ${requestScope['org.springframework.validation.BindingResult.obj'].hasFieldErrors('text1') ? 'has-error' : ''}">
<label class="col-lg-3 control-label">my label</label>
<div class="col-lg-5">
<form:select class="form-control" name="type" path="text1.code" id="selectType">
<option value="">---------</option>
<c:forEach items="${types }" var="type">
<form:option value="${type.id }">
<c:out value=" ${type.code}"></c:out>
</form:option>
</c:forEach>
</form:select>
<form:errors path="text1.code" class="has-error error"></form:errors>
</div>
</div>
我的 Controller 重定向到创建页面,但未显示错误。在 Debug模式下,有一个错误表明 text1.code
不能为空白。
最佳答案
在您的 Jsp 页面中添加以下行
<div class="col-md-6 form-group ${requestScope['org.springframework.validation.BindingResult.obj'].hasFieldErrors('text1') ? 'hasErrors' : ''}">
或者使用 hasFieldErrors()
代替
<div class="col-md-6 form-group ${requestScope['org.springframework.validation.BindingResult.obj'].hasFieldErrors()}">
关于 addAttributes("hasErrors",true)
,使用 addFlashAttribute()
,它存储在 flashmap 和对象中(在您的情况下,当您导航以创建页面或在两个 Controller 之间重定向。)Look at this for more
在你的 Controller 中添加这样的RedirectAttributes
对象
@RequestMapping(value = "/create", method = RequestMethod.POST)
public String creationProjet(@Valid @ModelAttribute MyObjectDTO obj,
BindingResult result,
RedirectAttributes redirectAtt,
Model model) {
if (result.hasErrors()) {
redirectAtt.addFlashAttribute("hasErrors","ur message");//instead of true you can write your own message
return "create";
} else {
....
}
return "redirect:/list";
}
}
如果你自己写消息而不是 true
<c:if test="${not empty hasErrors">
<p>${hasErrors}</p>
</c:if>
关于java - 如何在 spring mvc 的 jsp 中显示验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39393966/