我无法在jsp页面上显示弹出验证错误。这是我的代码。在jsp页面上,当我输入一个空名称时,控制器代码会返回一个有错误的ModelAndView,它只是不会在jsp页面上显示它。
非常感谢任何帮助。谢谢!
@RequestMapping(value = "/editTag.htm", method = RequestMethod.POST)
public ModelAndView editTag(@ModelAttribute("Tag") Tag tag) {
BindingResult result = new BeanPropertyBindingResult(tag, "tag");
ValidationUtils.rejectIfEmptyOrWhitespace(result, "name", "field.required", "Tag Name is required");
if (result.hasErrors()) {
return new ModelAndView("tag.edit").addObject("tag",tag).addObject("errors", result);
}
tagDao.merge(tag);
return new ModelAndView("redirect:/tags/listTags.htm");
}
<form:form commandName="tag">
<form:errors path="name"/><br />
<form:input path="name" size="30" />
...
</form:form>
答案 0 :(得分:1)
您正在构建一个新的BindingResult,而Spring已经提供了一个(并在后台使用)。只需在@ModelAttribute注释参数之后立即将BindingResult添加到方法即可。然后,您可以从结果中获取模型,并使用它来构建ModelAndView。
另请注意,ModelAttribute名称(当前为Tag)与表单(tag)中使用的名称不匹配。那两个应该匹配。
以下内容应该有效。
@RequestMapping(value = "/editTag.htm", method = RequestMethod.POST)
public ModelAndView editTag(@ModelAttribute("tag") Tag tag, BindingResult result) {
ValidationUtils.rejectIfEmptyOrWhitespace(result, "name", "field.required", "Tag Name is required");
if (result.hasErrors()) {
return new ModelAndView("tag.edit", result.getModel());
}
tagDao.merge(tag);
return new ModelAndView("redirect:/tags/listTags.htm");
}
答案 1 :(得分:0)
你能试试吗
public ModelAndView editTag(@ModelAttribute("Tag") Tag tag,BindingResult result) {
result = new BeanPropertyBindingResult(tag, "tag");