我是 spring 新手,我正在使用 spring 3.0.5 RELEASE。我的要求是我想使用 spring 注释验证表单中的字段。我用来执行此操作的代码如下。这是实现验证器接口的验证器类。
public class FluctuationValidator implements Validator{
@Override
public boolean supports(Class<?> clazz) {
return ReportsCommand.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object command, Errors errors) {
ReportsCommand reportsCommand = (ReportsCommand) command;
System.out.println("Inside the validate method of validator class");
ValidationUtils.rejectIfEmpty(errors, "callType", "PackageNameIsRequired");
}
}
这里的 ReportsCommand 是在表单中输入数据的类。在控制器中,代码如下所示。
@Autowired
FluctuationValidator fluctuationValidator;
public ModelAndView showForm(@ModelAttribute("reports") ReportsCommand model, ModelAndView modelAndView,BindingResult result,
HttpServletRequest request, HttpServletResponse response) throws Exception {
fluctuationValidator.validate(modelAndView,result);
if (result.hasErrors()) {
modelAndView = new ModelAndView("report-generate-form");
return modelAndView;
}
}
在我正在使用的 jsp 文件中
<form:errors path="callType" cssClass="error" />
我的代码中有任何问题。如果我这样使用,我会得到 org.springframework.beans.NotReadablePropertyException:bean 类 [org.springframework.web.servlet.ModelAndView] 的无效属性“callType”:bean 属性“callType”不是可读或具有无效的 getter 方法:getter 的返回类型是否与 setter 的参数类型匹配?例外。
对于属性 callType,它不是在 ReportsCommand 类中搜索,而是在 spring ModelAndView 类中搜索。可能是什么 pbm。谁能告诉我...