我正在学习自己的Spring MVC 2.5主要来自文档。有人可以解释以下内容:
command
个对象与使用@ModelAttribute
传递对象的优点/不同。此外,在此代码中,行ValidationUtils.rejectIfEmpty(e, "name", "name.empty");
如何工作?如果未传入person对象,如何检查 person 对象上的名称是否为空?
public void validate(Object obj, Errors e) {
ValidationUtils.rejectIfEmpty(e, "name", "name.empty");
Person p = (Person) obj;
if (p.getAge() < 0) {
e.rejectValue("age", "negativevalue");
} else if (p.getAge() > 110) {
e.rejectValue("age", "too.darn.old");
}
}
(此代码来自the docs的第5.2节)
由于
答案 0 :(得分:3)
关于命令对象的问题不是很清楚。如果您的意思是以下语法
@RequestMapping(...) public ModelAndView foo(Command c) { ... }
然后它与以下
相同@RequestMapping(...) public ModelAndView foo(@ModelAttribute Command c) { ... }
因为@ModelAttribute
可以省略。实际需要的唯一情况是你需要明确指定属性名称(否则它将被推断为第一个字母被去除资本化的类名,即command
)
在Spring 2.5中 - 没有。在Spring 3.0中,您可以将declarative validation与JSR-303 Bean Validation API一起使用。
Errors
对象引用了要验证的对象。
答案 1 :(得分:1)
以下是您第一个问题的答案。 http://chompingatbits.com/2009/08/25/spring-formtag-commandname-vs-modelattribute/
根据我的经验,没有更简单的方法来完成验证,因为它很容易。您可以更轻松地将诸如commons-validator之类的库集成到您的项目中,并在表单中使用预定义的验证规则。
http://numberformat.wordpress.com/tag/spring-mvc-validation/
以及Spring的第3版,您可以使用注释来使用Bean验证。