我正在使用 Hibernate 和 Spring Annotations 进行大量验证,如下所示:
public class Account {
@NotEmpty(groups = {Step1.class, Step2.class})
private String name;
@NotNull(groups = {Step2.class})
private Long accountNumber;
public interface Step1{}
public interface Step2{}
}
然后在控制器中,它在参数中被调用:
public String saveAccount(@ModelAttribute @Validated({Account.Step1.class}) Account account, BindingResult result) {
//some more code and stuff here
return "";
}
但我想根据控制器方法中的某些逻辑来决定使用的组。有没有办法手动调用验证?像 result = account.validate(Account.Step1.class)
这样的东西?
我知道创建自己的 Validator 类,但这是我想避免的事情,我更愿意只在类变量本身上使用注释。
原文由 Ross Hettel 发布,翻译遵循 CC BY-SA 4.0 许可协议
Spring 提供 LocalValidatorFactoryBean ,它实现了 Spring
SmartValidator
接口以及 Java Bean ValidationValidator
接口。