Valide el campo del atributo ModelAttribute para evitar 400 errores de solicitud errónea

Tengo unaArticleFormModel conteniendo datos enviados por normalhtml form que se inyecta por primavera utilizando@ModelAttribute anotación, es decir

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

Todo funciona perfectamente bien hasta cierto punto. El problema es que laArticleFormModel contiene unadouble campoprotected, ajuste utilizando el setter normal). Todo funciona bien siempre que los datos enviados por el usuario sean un número. Cuando escriben una palabra, todo lo que obtengo es400 Bad Request Http Error.

Ya he registrado unWebDataBinder para este controlador

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

dóndevalidator es una instancia de una clase personalizada de implementaciónorg.springframework.validation.Validator Interfaz pero no sé qué hacer a continuación. Me gustaría poder analizar el modelo, obtener una respuesta HTTP válida y mostrar un mensaje de error en el formulario. losinitBinder() Se llama metodo y puedo llamarvalidator.validate() de ella, pero no cambia el error (para los datos erróneos).

Soy consciente de que podría usar un definidor para analizar la cadena, verificar si es un número, si no, almacenar esa información en una variable, luego recuperar esa variable durante la validación, pero eso parece ser demasiado trabajo. Tiene que haber una forma más fácil de forzar un tipo en el campo sin obtener un error. Además, el problema está en el enlace de datos, no en la validación, por lo que creo que debería colocarse en la capa de código respectiva.

También estaba pensando en implementarjava.beans.PropertyEditor y llamandobinder.registerCustomEditor(), pero me falta una fuente de conocimiento confiable.

La validación del lado del cliente (verificar si los datos son números a través de JavaScript) no es una posibilidad.

TL; DR:

¿Cómo puedo forzar que un campo sea de un tipo específico para un@ModelAttribute elemento sin conseguir400 Bad Request Http Error?

Respuestas a la pregunta(1)

Su respuesta a la pregunta