我正在使用 Hibernate 和 Spring 注释进行大量验证,如下所示:
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 类,但这是我想避免的事情,我宁愿只在类变量本身上使用注释。
Spring提供本地验证器工厂Bean,它实现了 SpringSmartValidator接口以及 Java Bean 验证Validator界面。
// org.springframework.validation.SmartValidator - implemented by LocalValidatorFactoryBean
@Autowired
SmartValidator validator;
public String saveAccount(@ModelAttribute Account account, BindingResult result) {
// ... custom logic
validator.validate(account, result, Account.Step1.class);
if (result.hasErrors()) {
// ... on binding or validation errors
} else {
// ... on no errors
}
return "";
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)