Java spring mvc验证最佳实践
我主要从文档中学习SpringMVC2.5。有人能解释一下吗Java spring mvc验证最佳实践,java,spring-mvc,Java,Spring Mvc,我主要从文档中学习SpringMVC2.5。有人能解释一下吗 使用命令对象与使用@modeldattribute传递对象的优点/区别 除了编写验证器对象之外,还有更简单的方法进行验证吗 另外,在这段代码中,ValidationUtils.rejectIfEmpty(e,“name”,“name.empty”)工作?当person对象未传入时,如何检查person对象上的名称是否为空 public void validate(Object obj, Errors e) {
- 使用
对象与使用命令
传递对象的优点/区别@modeldattribute
- 除了编写验证器对象之外,还有更简单的方法进行验证吗
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");
}
}
公共无效验证(对象obj,错误e){
ValidationUtils.rejectIfEmpty(e,“name”,“name.empty”);
人员p=(人员)obj;
if(p.getAge()<0){
e、 拒绝价值(“年龄”、“负面价值”);
}else if(p.getAge()>110){
e、 拒绝价值(“年龄”、“太老了”);
}
}
(该代码来自第5.2节)
谢谢
- 关于命令对象的问题不是很清楚。如果你指的是以下语法
@RequestMapping(...) public ModelAndView foo(Command c) { ... }
那么它与下面的相同
@RequestMapping(...) public ModelAndView foo(@ModelAttribute Command c) { ... }
因为@modeldattribute
可以省略。实际需要它的唯一情况是,您需要显式指定属性名(否则它将被推断为第一个字母不大写的类名,即命令
)
- 在Spring2.5中-否。在Spring3.0中,您可以与JSR-303bean验证API一起使用
Errors
对象引用了正在验证的对象
以下是您第一个问题的答案。
根据我的经验,没有更简单的方法来完成验证,因为它足够简单。您可以更轻松地将诸如commons validator之类的库集成到项目中,并在表单中使用预定义的验证规则
在第三版Spring中,您还可以使用注释进行Bean验证。我想我对命令对象的理解还不清楚。我认为使用@modeldattribute可以对包含表单中的属性的对象进行注释,这些属性将为您设置。例如,@modeldattribute User User将从注册表中为您提供一个预填充的用户对象。这就是我想做的。但是Command对象有什么意义呢?@mkoryak:我使用名称
Command
作为您自己对象的占位符,例如您的示例中的User
。很好。所以commandName是我不关心的老东西。