Spring form Walidacja pola ModelAttribute, aby uniknąć błędu 400 Bad Request

MamArticleFormModel zawierające dane wysłane normalniehtml form który jest wstrzykiwany przez Spring@ModelAttribute adnotacja, tj.

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

Wszystko działa do pewnego stopnia doskonale. Problem polega na tym, żeArticleFormModel zawiera adouble pole (protected, ustaw za pomocą normalnego setera). Wszystko działa dobrze, dopóki dane wysłane przez użytkownika są liczbą. Kiedy wpisują słowo, wszystko, co dostaję, to400 Bad Request Http Error.

Zarejestrowałem jużWebDataBinder dla tego kontrolera

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

gdzievalidator jest instancją implementującą klasę niestandardowąorg.springframework.validation.Validator interfejs, ale nie wiem co dalej. Chciałbym móc analizować model, uzyskać poprawną odpowiedź HTTP i wyświetlić komunikat o błędzie w formularzu. TheinitBinder() metoda jest wywoływana i mogę zadzwonićvalidator.validate() z tego, ale nie zmienia błędu (dla tych błędnych danych).

Wiem, że mogłem użyć setera do parsowania łańcucha, sprawdzić, czy jest to liczba, jeśli nie, zapisać tę informację w zmiennej, a następnie pobrać tę zmienną podczas walidacji, ale wydaje się, że to zbyt dużo pracy. Musi istnieć łatwiejszy sposób wymuszenia typu na polu bez błędu. Ponadto problem dotyczy powiązania danych, a nie sprawdzania poprawności, więc uważam, że powinien on zostać umieszczony w odpowiedniej warstwie kodu.

Myślałem też o wdrożeniujava.beans.PropertyEditor i wołaniebinder.registerCustomEditor(), ale brakuje mi wiarygodnego źródła wiedzy.

Sprawdzanie poprawności po stronie klienta (sprawdzanie, czy dane są numerowane przez JavaScript) nie jest możliwe.

TL; DR:

Jak mogę wymusić, aby pole było określonego typu dla a@ModelAttribute przedmiot bez dostania400 Bad Request Http Error?

questionAnswers(1)

yourAnswerToTheQuestion