Форма Spring ModelAt, проверка поля дани, чтобы избежать ошибки 400 Bad Request

У меня естьArticleFormModel содержащие данные, отправленные обычным способомhtml form который впрыскивается Spring с помощью@ModelAttribute аннотации, т.е.

@RequestMapping(value="edit", method=RequestMethod.POST)
public ModelAndView acceptEdit(@ModelAttribute ArticleFormModel model, 
    HttpServletRequest request, BindingResult errors)
{
    //irrelevant stuff
}

Все работает прекрасно до некоторой степени. Проблема в том, чтоArticleFormModel содержитdouble поле (protected, установите с помощью обычного установщика). Все работает нормально, пока данные, отправленные пользователем, являются числом. Когда они набирают слово, я получаю только400 Bad Request Http Error.

Я уже зарегистрировалWebDataBinder для этого контроллера

@InitBinder
protected void initBinder(WebDataBinder binder) throws ServletException
{
    binder.setValidator(validator);
}

гдеvalidator является экземпляром пользовательского класса, реализующегоorg.springframework.validation.Validator интерфейс, но я не знаю, что делать дальше. Я хотел бы иметь возможность проанализировать модель, получить действительный ответ HTTP и отобразить сообщение об ошибке в форме.initBinder() метод вызывается, и я могу позвонитьvalidator.validate() от этого, но это не меняет ошибку (для этих неправильных данных).

Я знаю, что я мог бы использовать установщик для анализа строки, проверить, является ли это число, если нет, сохранить эту информацию в переменной, а затем извлечь эту переменную во время проверки, но это, кажется, слишком много работы. Должен быть более простой способ принудительного ввода типа в поле без получения ошибки. Кроме того, проблема заключается в привязке данных, а не в проверке, поэтому я считаю, что они должны быть размещены на соответствующем уровне кода.

Я также думал о реализацииjava.beans.PropertyEditor и звонитbinder.registerCustomEditor()Мне не хватает надежного источника знаний.

Проверка на стороне клиента (проверка, являются ли данные числовыми через JavaScript), невозможна.

TL; DR:

Как я могу заставить поле быть определенного типа для@ModelAttribute пункт без получения400 Bad Request Http Error?

Ответы на вопрос(1)

Ваш ответ на вопрос