通过将对象绑定(bind)到表单并在验证 Controller 方法中为对象使用 @Valid
符号,验证对象中的所有字段非常简单。
假设我有一个只允许用户更新某些字段的更新屏幕。是否有办法避免手动验证?
谢谢!
最佳答案
要针对验证规则的子集进行验证,您可以将验证组的 spring 功能与 @Validated
一起使用
您必须为您的 bean 或类似于此的表单模型定义一组组
public class Form {
public interface Group1 { /*empty interface*/ };
public interface Group2 { /*empty interface*/ };
@NotEmpty(groups = { Group1.class }) // associate constraints
private String field1; // to a validation group
@NotEmpty(groups = { Group2.class })
private String field2;
}
在你的 Controller 中,你可以像这样使用注解
@Controller
public class FormController {
@RequestMapping(value = "/validate1", method = RequestMethod.POST)
public String updateGroup1(@Validated(Form.Group1.class) Form form, Errors errors) {
if (errors.hasErrors()) {
// return to the same view
}
// return success
}
}
你可以在这里找到一个很好的例子
https://narmo7.wordpress.com/2014/04/26/how-to-set-up-validation-group-in-springmvc/
关于Java Spring——验证单个对象字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43903211/