Я предлагаю вам всегда работать с типами доменов и не использовать 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