Проверка бина для целочисленного поля - PullRequest
0 голосов
/ 15 ноября 2018

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

public class ClientTO {
       private Integer phone_num; //
}

Я попытался:

1) @Digits - Этоне проверяет, является ли ввод целочисленным или нет, поскольку вы могли видеть, что исключение несоответствия типов все еще выбрасывается.

2) Моя пользовательская проверка - которая, кажется, не работает на Integer полях

Ошибка:

Exception in thread "main" javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.lang.Integer.

Мой пользовательский класс проверки:

public class X_CVAImpl implements ConstraintValidator<X_CustomValidatorAnnotation,String>{  
    public boolean isValid(String value, ConstraintValidatorContext context) {
        // TODO Auto-generated method stub
        boolean val_d;
        if (value.matches("[0-9]+") && value.length() ==10) {
            val_d=true;
        }else {
            val_d=false;            
        }
        return val_d;
    }
}

Любая помощь, пожалуйста?

1 Ответ

0 голосов
/ 15 ноября 2018

@ Цифры будут работать только для примитивных типов .Поэтому, если вы измените свою сущность на следующую, ваша проверка должна вступить в силу.

public class ClientTO {
   @Digits(integer=10, fraction=0)
   private int phone_num; // Constraint: phone_num can only be 10 digits long or less
   ...
}

С учетом сказанного я считаю, что вам следует использовать строку для проверки номера телефона.

public class ClientTO {
   @Size(min=10, max=10)
   @Pattern(regexp="(^[0-9]{10})")
   private String phone_num; // Constraint: phone_num would match 10 digits number
   ...
}
...