Проверять, только если поле не пустое

Я использую JSR303 Spring Validation и у меня есть следующее;

@Digits(fraction = 0, integer = 15)
private String tpMobile;

Проверка говорит Must be number between 10-15 digits, но дело в том, что это поле является необязательным. Поэтому, когда пользователь оставил его пустым, также отображается то же сообщение об ошибке.

Итак, что я хочу сделать, это проверить, только если поле не пусто. Если поле пустое, пропустите проверку этого поля.


person Ravindu    schedule 09.10.2013    source источник


Ответы (2)


Вместо использования @Digit я хотел бы предложить вам использовать @Pattern(message="YOUR_MESSAGE", regexp="REGULAR_EXPRESSION")

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

Итак, вы хотите запретить пользователю вводить что-либо, кроме пробелов и цифр. Создайте для этого регулярное выражение и используйте с ним @Pattern.

Для вашего случая:

@Pattern(message="YOUR_MESSAGE", regexp="^(\\s*|\\d{10,15})$")
person Satyam Koyani    schedule 09.10.2013

Очевидно, что вы формируете пустые строки вместо нулей. Просто проверьте значение tpMobile

person Gregory Klimov    schedule 09.10.2013
comment
да, он отправляет пустые строковые значения при проверке из firebug. - person Ravindu; 09.10.2013
comment
Итак, как я могу отправить значения NULL тогда?? - person Ravindu; 09.10.2013
comment
Да, просто NULL вместо - person Gregory Klimov; 09.10.2013