Проверка формы SpringAttribute в форме Spring, чтобы избежать ошибки 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() от этого, но это неизменить ошибку (для неправильных данных) .I '

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

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

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

TL; DR:

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

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

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