1

検証に問題があります。1 つの ConstraintValidator のみを使用して Bean の 2 つのプロパティを検証することは可能ですか? 私は次のようなものを持っています:

@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 内で、findBySearchBean を呼び出して検索されたデータを返すサービス SomeApplicationService を呼び出します。複数のカスタマイズされた ConstraintValidator (および複数の findBySearchBean) を呼び出さなければならない代わりに、サービスを 1 回だけ呼び出して 2 つの異なるプロパティをチェックすることは可能ですか?

ありがとう

さよなら

4

1 に答える 1

0

検証の結果に応じてエラーメッセージを変更する場合は、ConstraintValidatorContextを使用する必要があります。デフォルトのエラーメッセージを無効にして、独自のエラーメッセージを作成できます。何かのようなもの:

 constraintContext.disableDefaultConstraintViolation();
 constraintContext.buildConstraintViolationWithTemplate( "{mykey}"  ).addConstraintViolation();

制約違反のプロパティパスを調整することもできます。ConstraintValidatorContextは、流暢なAPIを提供します。Javadocを確認するか、IDEで探索してください:-)

于 2012-10-19T07:06:24.430 に答える