2012-01-26 42 views
5

Estoy usando Spring 3 Portlet MVC. La validación/enlace en solo MVC debe ser el mismo.cualquier forma de obtener BindingResult para @RequestParam?

Tengo un solo campo de formulario int. Cuando estoy haciendo

void doSmth(MyForm form, BindingResult bindingResult) throws ... { 
    int bindErrors = bindingResult.getErrorCount()) 
    ... 

y presentar un valor de campo que no se puede analizar como int este método es ejecutado y bindErrors es 1. Valor de campo de formulario que recibe este método es 0. Eso es grande.

Pero crear un formulario solo para contener un solo campo no es muy bueno.

estoy cambiando el código para:

void doSmth(@RequestParam int userId, BindingResult bindingResult) ... { 
    int bindErrors = bindingResult.getErrorCount()) 
    ... 

y conseguir portlets no disponible mensaje en el navegador y esto Excepción:

org.springframework.web.portlet.FrameworkPortlet processRequest Podría solicitud no completa org.springframework.beans.TypeMismatchException: Error al convertir valor del tipo 'java.lang.String' al tipo requerido 'int'; anidada excepción es java.lang.NumberFormatException: Para cadena de entrada: "q"

Pregunta: ¿hay alguna manera de proceder con la ejecución del método y procesar los errores de enlace en él, incluso si falla @RequestParam conversión de tipo? Intenté hacer que @RequestParam no fuera obligatorio y proporcionarle un valor predeterminado no me ayudó.

Respuesta

3

La referencia de Spring permite BindingResult solo para objetos de comando u objeto de formulario.

org.springframework.validation.Errors/org.springframework.validation.BindingResult resultados de la validación para un comando anterior o en forma de objeto (el argumento método inmediatamente anterior).

(15.3.2.3 Supported handler method arguments and return types)

lo que puede necesitar para ponerlo en práctica por su cuenta.

o envolver su única int en un objeto de comando y el uso del resultado vinculante sobre este objeto (un ejemplo se puede encontrar aquí: https://stackoverflow.com/a/13407434/280244)

+0

bien si no está apoyada fuera de la caja, entonces creo Puedo vivir con un solo valor Bean, gracias –

Cuestiones relacionadas