我的验证有问题。是否可以仅使用一个ConstraintValidator验证bean的两个属性?我有以下内容:
@Component
public class CheckSomeBeanPropertiesValidator implements ConstraintValidator<CheckSomeBeanProperties, SearchFormBean> {
@Autowired
SomeApplicationService applicationService;
public void initialize(CheckSomeBeanProperties checkSomeBeanProperties) {
}
public boolean isValid(SearchFormBean searchFormBean, ConstraintValidatorContext context) {
ReturnSearchBean searchBean = applicationService.findBySearchBean(searchFormBean);
if(searchBean.isNoResults()) return false; // it will return the message No data found
if(searchBean.isTooManyDataReturned()) return false; // it will return too many records found
return true;
}
}
CheckSomeBeanPropertiesValidator中的我调用服务SomeApplicationService,它返回一些调用findBySearchBean的数据。而不是必须调用多个自定义的ConstraintValidator(以及多个findBySearchBean),是否可以只调用一次服务并检查两个不同的属性?
由于
再见
答案 0 :(得分:0)
如果要根据验证结果更改错误消息,则应使用 ConstraintValidatorContext 。您可以禁用默认错误消息并构建自己的错误消息。类似的东西:
constraintContext.disableDefaultConstraintViolation();
constraintContext.buildConstraintViolationWithTemplate( "{mykey}" ).addConstraintViolation();
您还可以调整约束违规的属性路径。 ConstraintValidatorContext 提供了一个流畅的API。只需检查Javadocs或使用IDE进行探索: - )