Hibernate Validator - @Length - Как указать отдельное сообщение для min и max? - PullRequest
17 голосов
/ 17 августа 2011

Я использую валидатор Hibernate для проверки формы в моем веб-приложении.Я использую аннотацию @Length для моего атрибута String следующим образом:

@Length(min = 5, message = "The field must be at least 5 characters")
private String myString;

Однако мне нужно отобразить другое сообщение, если строка превышает 50 символов.Есть ли способ использовать готовый валидатор @Length для этого?Пример того, что я хотел бы сделать (компилятор не позволит мне), выглядит следующим образом:

@Length(min = 5, message = "The field must be at least 5 characters")
@Length(max = 50, message = "The field must be less than 50 characters")
private String myString;

Я пробовал @Max и @Min, и они не делают то, что я хочу.Любой вклад будет принята с благодарностью!

Ответы [ 3 ]

46 голосов
/ 17 августа 2011

Вы можете указать несколько @Length ограничений для одного элемента, используя внутреннюю аннотацию списка (которая определяется для каждого типа ограничения в Bean Validation / Hibernate Validator), например:

@List({
    @Length(min = 5, message = "The field must be at least 5 characters"),
    @Length(max = 50, message = "The field must be less than 50 characters")
})
private String myString;

Btw.Я рекомендую предпочесть @ Size , как определено API проверки бинов, над @Length по причинам переносимости.

8 голосов
/ 01 марта 2014

Если вы используете java-стандарт javax.validation.constraint.Size, вы можете достичь того же результата следующим образом:

@Size.List ({
    @Size(min=8, message="The field must be at least {min} characters"),
    @Size(max=60, message="The field must be less than {max} characters")
})
private String myString;

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

7 голосов
/ 17 августа 2011

Согласно документации, вы можете использовать @Length(min=, max=), с одним сообщением.Затем просто измените ваше сообщение на «Поле должно содержать от 5 до 50 символов»

...