Required java lang integer

Required java lang integer

В форме есть поле bankCode, должно передаваться только числа, т.е.надо сделать валидацию, если есть символы (например 2344ро43), то показать ошибку. Я так понимаю, надо написать свой класс, расширяющий PropertyEditorSupport.
Я делаю так, но непашет. Подскажите, что я нетак сделал.

public void setAsText(String text) throws IllegalArgumentException < Integer intText = new Integer(text); if (!StringUtils.hasLength(text)) < setValue(null); >else< for (int i = 0; i < text.length(); ++i) < setValue(intText); if ((Character.isDigit(text.charAt(i))) == false) < setValue(new Integer(-1)); break; > > > >

и потом в классе валидации я проверяю, если -1 — то выдаю ошибку, если null или число — то должно пройти,т.к. поле необязательное для заполнения.

Здравствуйте, serjik, Вы писали:

для целей валидации кажися больше подходит Validator,

на интовость попроще проверять с помощью Integer.valueOf(. ) и ловить эксепшн

а у вас в объекте формы это поле типа Integer? если да, то как реагирует спринг на ввод туда не интового значения? (сорри, лениво проверять)

Здравствуйте, serjik, Вы писали:

Если все равно используете StringUtils, то для проверки на числовое значение можно исользовать

Сделал чтобы валидация нормально реагировала на ввод числового значения и показывало сообщение, когда в вводимом значении присутствуют символы. Но это поле необязательное для заполнения, и если ничего невводить, то выкидывает такую ошибку:
Failed to convert property value of type [java.lang.String] to required type [java.lang.Integer] for property bankCode; nested exception is java.lang.NumberFormatException: For input string: «»
Парни, подскажите плиз, как привально доделать
Класс валидации:

public class DepartmentValidator implements Validator < public boolean supports(Class clazz) < return Department.class.isAssignableFrom(clazz); > public void validate(Object obj, Errors error) < Department department = (Department) obj; ValidationUtils.rejectIfEmptyOrWhitespace(error, "departmentName", "required","заполните поле"); Integer bankCode = department.getBankCode(); if(bankCode == null)< error.rejectValue("bankCode", "nonNumeric", "вводите только числовые значения"); > > >
public class MyIntegerEditor extends PropertyEditorSupport < public void setAsText(String text) throws IllegalArgumentException < if (StringUtils.isNumeric(text)==false) < setValue(null); >else< setValue(new Integer(text)); > > public String getAsText() < Object value = getValue(); if (value != null) < return value.toString(); > else < return ""; > > >

Здравствуйте, serjik, Вы писали:

S>Сделал чтобы валидация нормально реагировала на ввод числового значения и показывало сообщение, когда в вводимом значении присутствуют символы. Но это поле необязательное для заполнения, и если ничего невводить, то выкидывает такую ошибку:
S>Failed to convert property value of type [java.lang.String] to required type [java.lang.Integer] for property bankCode; nested exception is java.lang.NumberFormatException: For input string: «»
S>Парни, подскажите плиз, как привально доделать
S>Класс валидации:

да вроде все должно правильноотрабатывать и без дополнительных костылей. Тю.е. никаких доп. editor-ов не нужно.

Источник

Читайте также:  Проверить есть ли интернет python
Оцените статью