Как объяснить назначение Bean Validation (JSR303) для свойства bean? - PullRequest
1 голос
/ 17 октября 2011

Я использую Bean Validation для Spring MVC. А Spring связывает сбои проверки со свойствами bean-компонента, в которых определяется ошибочная аннотация, а также с ограничениями на основе класса для самого bean-компонента.

Моя проблема заключается в том, что я использую несколько ограничений валидации баз классов, но сбои валидации следует назначать не классу, а одному из свойств.

например:

@ScriptAssert(lang = "javascript", script = "_this.passVerify.equals(_this.pass)")
public class MyBean {
    @Size(min=6, max=50)
    private String pass;

    private String passVerify;
}

( Но это ТОЛЬКО ПРИМЕР , пожалуйста, не говорите, как я могу написать пользовательское ограничение / аннотацию, которую можно поместить в переменную pass )

Что мне может понадобиться, так это:

@ValidationAlias(
   constraint = @ScriptAssert(lang = "javascript", script = "_this.passVerify.equals(_this.pass)"),
   field = "pass")
public class MyBean {...

Итак, мой вопрос:

  • Существует ли что-то, что решает эту проблему?
  • У кого-нибудь есть идея получше (у меня нет проблем, если она использует пружину)?

1 Ответ

0 голосов
/ 24 октября 2011
@ValidationAlias(
   constraint = @ScriptAssert(lang = "javascript", script = "_this.passVerify.equals(_this.pass)"),
   field = "pass")
public class MyBean {...

Похоже, что ваша лучшая ставка в сочетании с ConstraintValidatorContext из ConstraintValidator # isValid , который позволяет настроить сообщение об ошибке и путь. С помощью disableDefaultConstraintViolation вы можете отключить сообщение об ошибке по умолчанию.

...