Java springmvc中的验证
我们在web应用程序中使用SpringMVC3.0。我们也在使用SpringMVC的验证框架 在进行验证时,我们需要为每个需要验证的实体创建验证器。例如,如果我有一个Person实体,我将使用下面的PersonValidator验证它Java springmvc中的验证,java,validation,spring-mvc,Java,Validation,Spring Mvc,我们在web应用程序中使用SpringMVC3.0。我们也在使用SpringMVC的验证框架 在进行验证时,我们需要为每个需要验证的实体创建验证器。例如,如果我有一个Person实体,我将使用下面的PersonValidator验证它 public class PersonValidator implements Validator { /** * This Validator validates just Person instances */ public boolean support
public class PersonValidator implements Validator {
/**
* This Validator validates just Person instances
*/
public boolean supports(Class clazz) {
return Person.class.equals(clazz);
}
public void validate(Object obj, Errors e) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "firstName", "field.required");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "surname", "field.required");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "age", "field.required");
}
}
我的问题是,是否可能对不同方法的相同实体进行不同的验证
@RequestMapping(method = RequestMethod.POST)
public String add(@Valid Person person, BindingResult result) {
if (result.hasErrors()) {
return "person/new";
}
personService.addPerson(person);
return "redirect:/persons";
}
@RequestMapping(method = RequestMethod.POST)
public String update(@Valid Person person, BindingResult result) {
if (result.hasErrors()) {
return "person/edit";
}
personService.updatePerson(person);
return "redirect:/persons";
}
我想在添加新人员时验证名字、姓氏和年龄,但在更新时,我不希望年龄是强制性的
这只是一种随机情况,它可以是任何实体和任何属性
我们如何处理这种情况
谢谢。您可以删除
@Valid
注释,改为在方法内部为模型对象设置一个用于插入vs更新的标志,然后直接调用验证器(您可以将它们插入控制器)
然后在验证器中,您可以选择当前场景需要哪些验证。以前没有人这样做过吗?有什么想法吗?