我正在尝试为我的Spring表单运行一个验证器类,但我的错误没有显示在我的页面上。在Spring验证方面,我是新手,所以这里肯定存在一些错误。这是我的表格。 (顺便说一句,Eclipse在form:error
行上发布警告,说明“List是原始类型。应该参数化泛型类型列表。”)
<form:form commandName="bulletin" method="post" action="processBulletin">
<table>
<tr>
<td>Name:</td>
<td><form:errors path="name" /></td>
<td><form:input path="name" maxlength="30" /></td>
</tr>
<tr>
<td>Subject:</td>
<td><form:errors path="subject" /></td>
<td><form:input path="subject" maxlength="50" /></td>
</tr>
<tr>
<td valign="top">Message:</td>
<td><form:errors path="note" /></td>
<td><form:textarea path="note" cols="70" rows="20" /></td>
</tr>
<tr>
<td><input type="submit" /></td>
<td> </td>
</tr>
</table>
</form:form>
这是我的控制器类。我从这里开始调用验证课程,我不确定这是否正确,所以如果不是这样的话,请随意这样说。
@RequestMapping(value = "/processBulletin", method = RequestMethod.POST)
public String processBulletin(
@ModelAttribute("bulletin") Bulletin bulletin, BindingResult result) {
final BindException errors = new BindException(bulletin, "bulletin");
bulletinValidator.validate(bulletin, errors);
if (errors.hasErrors()) {
return "redirect:/approvedBulletins";
} else {
// rest of method
}
return "redirect:/approvedBulletins";
}
这是我的验证课程。
@Override
public boolean supports(Class<?> cls) {
return Bulletin.class.isAssignableFrom(cls);
}
@Override
public void validate(Object target, Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "subject", "Subject is required");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "Name is required");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "note", "Message is required");
}
}
答案 0 :(得分:0)
如果您遇到错误,请尝试返回view name
,而不是重定向return "redirect:/approvedBulletins";
。