Утвердите числа весной - PullRequest
       15

Утвердите числа весной

2 голосов
/ 20 января 2010

У меня есть базовое сомнение в том, как поступить в моем заявлении. У меня есть форма, и мне нужно проверить, что все входные данные, которые являются числами. У меня проблема с определением типа атрибутов компонента, связанных с формой. Я не знаю, если установить для них значение String или удвоить, и вот причины:

  • Если я установил их в удвоение: если я введу во входные данные что-то, не являющееся числом, когда пружина заполняет входные данные в боб, я получаю исключение в JSP, что он не может преобразовать его в двойной.
  • Если я установлю их в строку: у меня будет хорошая проверка, хотя позже мне придется изменить их на удвоение. Но моя проблема здесь в том, что этот bean-компонент хранится в базе данных с hibernate, а аннотация @column будет хранить его как текст, и я хотел бы сохранить его, как если бы он был двойным. Есть ли возможность изменить тип столбца на тип с двойной задержкой?

Кто-нибудь может дать мне какое-либо представление о том, как действовать в этом случае? Спасибо.

Ответы [ 3 ]

3 голосов
/ 20 января 2010

Я предлагаю вам всегда работать с типами доменов и не использовать String только потому, что именно так HTTP отправляет параметры. Если поле имеет тип double, вы будете использовать его как таковое в своем коде, а также сохранить его как таковое в базе данных. Пусть Spring преобразует параметры запроса в нужный вам тип.

Привязка данных полезна для обеспечения возможности динамического связывания ввода пользователя с моделью предметной области приложения (или любых объектов, которые вы используете для обработки ввода пользователя). Spring предоставляет так называемый класс DataBinder , чтобы сделать именно это.

Вы можете зарегистрировать их в методе initBinder ваших контроллеров и позволит вам преобразовать строки из вашего запроса в желаемый тип. См., Например, класс CustomNumberEditor , используемый для анализа введенных пользователем числовых строк в свойствах Number bean-компонентов. Затем вы можете объединить это с интерфейсом Validator для более сложных проверок.

РЕДАКТИРОВАТЬ: При связывании пружиной для ошибок привязки при неудачном преобразовании используются typeMismatch коды ошибок (required код, если вы указываете поле, как требуется, но не предоставляете его). В вашем случае по умолчанию показывается сообщение об исключении. Чтобы изменить сообщение на более дружественное, необходимо указать ключ пакета в файле свойств с использованием префикса typeMismatch.

Это указывается DataBinder.setMessageCodesResolver и по умолчанию org.springframework.validation.DefaultMessageCodesResolver . В javadoc из DefaultMessageCodesResolver вы можете увидеть полные примеры, но в основном вам просто нужно добавить такую ​​запись в свой файл свойств:

typeMismatch.yourField=Your user friendly error message goes here
1 голос
/ 20 января 2010

Вы можете сопоставить исключение с пользовательским сообщением, если в вашем сообщении message.properties есть запись в следующей форме (или эквивалентный пакет сообщений, который вы используете).

typeMismatch.fieldName, где fieldName будет именем проверяемого поля.

0 голосов
/ 20 января 2010

Если вы используете Spring 3.0

взгляните на Переопределяющие значения по умолчанию с аннотациями часть

Преобразование и проверка типа пружины 3

Если вы используете Spring 2.x +, вы можете достичь этого, зарегистрировав Custom PropertyEditor, как упомянуто в посте выше

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