【发布时间】:2012-10-17 14:23:27
【问题描述】:
我的验证有问题。是否可以仅使用一个 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)之外,是否可以只调用一次服务并检查两个不同的属性?
谢谢
再见
【问题讨论】:
-
您的问题很模糊,您还应该发布有关如何使用自定义约束的代码。我只是猜测您在两个不同的属性上使用此自定义约束,但您只想拥有一次。这只有在您使用类级别约束时才有可能。再说一次,我只是在猜测:-)
-
嗨,我在类级别上使用它,例如:@CheckSomeBeanPropertiesValidator public class SearchFormBean implements Serializable{ boolean noResults; boolean tooManyDataReturned; ....} 但问题是我想根据 bean 的哪个布尔值是真的返回两条不同的消息。我不想验证 2 个不同的属性调用两次相同的服务 findBySearchBean。谢谢你
标签: bean-validation