【发布时间】:2011-06-21 05:58:00
【问题描述】:
我正在使用 spring 编写一个 web 应用程序,但我遇到了表单验证问题。这是我第一次使用它,所以我还是要理解它......
基本上我有一个带有表单处理方法的控制器:
@RequestMapping(params = "action=gestprodotti")
public ModelAndView doGestProdotti(
@RequestParam(value = "page", required = false, defaultValue = "0") int page,
@RequestParam(value = "activity", required = false) String activity,
@ModelAttribute Prodotto prod, BindingResult bindresult,
HttpSession session) throws Exception {
控制器被注释并且不扩展任何东西。在后面的方法中,收到绑定到表单的对象后,我这样做了:
Validator valid = activityHandler.getValidator();
valid.validate(backingObject, bindresult);
if (bindresult.hasErrors()){
return handleRequest(action, ACTIVITY_NEW_ITEM, jspComponent,
page, itemId, backingObject, bindresult, appstatus);
}
这意味着我手动调用验证器并返回相同的表单页面(ModelAndView 结果)。
验证码:
public static final class ProdottoValidator implements Validator{
@Override
public boolean supports(Class<?> other) {
return Prodotto.class.isAssignableFrom(other);
}
@Override
public void validate(Object obj, Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "codice", "Il codice è richiesto");
}
}
以及相关的JSP代码:
<td colspan="2" align="left">Codice<form:input id="code"
path="codice" /><form:errors path="codice" /></td>
这适用于绑定,但我没有收到任何错误。我没有创建任何 messages.properties 文件,但我想我还是应该看到一些东西。检测到错误是因为 bindresult.hasErrors() 给出了 true,但呈现的 html 没有显示任何内容来代替 form:errors。我是否缺少诸如配置之类的东西?是不是因为没有messages.properties文件不起作用?
【问题讨论】:
标签: forms spring-mvc