sirve requestmapping que puede para método mvc formulario form example escritura encontrar ejemplo configurar commandname clase attribute atributo java spring forms

requestmapping - ¿Hay una manera fácil de convertir las entradas de formularios Java/Spring vacíos en cadenas nulas?



para que sirve spring mvc (4)

¿Hay una manera fácil de convertir la entrada de formulario vacío en cadenas nulas en java? Estoy usando spring mvc y SimpleJdbcInsert para insertar el objeto en una base de datos MySQL. Me gustaría establecer la entrada en blanco en NULL en la base de datos en lugar de ''''. Tengo bastantes campos y espero una manera de hacerlo sin verificar manualmente cada valor.

¡Gracias!

Editar - Así que soy un idiota. Varios errores combinados de mi parte me hicieron creer que las respuestas correctas a continuación no eran correctas. Yo había escrito un propertyEditorSupport como este:

class StringEditor extends PropertyEditorSupport { public void setAsText(String text) { String value = text.trim(); if ("" == value) { setValue(null); } else { setValue(value); } } }

Dos problemas: primero, no getAsText, ¡así que mi formulario se rellenaba con cadenas "nulas"! Segundo, mi verificación de igualdad es C ++, no java. Cuando probé el setter recomendado, recargué la publicación, que ya contenía las cadenas "nulas". Una vez que limpié todo eso, todo comenzó a funcionar. Gracias por la ayuda, y perdón por mi "error de operador"!

Brett


La clase que estás buscando es:

org.springframework.beans.propertyeditors.StringTrimmerEditor

Si lo construyes con un true , convertirá las cadenas vacías / espacios en blanco a nulas. La forma de registrarlo en el archivador depende de si desea que sea el predeterminado o solo se aplique a ciertas vistas.

Por ejemplo, en un solo controlador puede simplemente agregar

@InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(String.class, new StringTrimmerEditor(true)); }

instrucciones aquí



Sé que esto es antiguo, pero desperdicié aproximadamente 2 o 3 horas hasta que encontré una manera muy fácil de aplicar un StringTrimmerEditor con una carpeta para todos mis controladores.

Una vez más: debo recordar a RTFM.

En la primavera 3.2, puede crear una clase de controlador @ControllerAdvice -annotated y usar el método @InitBinder -notot al igual que el ejemplo que dio @Affe.

http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann-initbinder-advice

Aquí hay un ejemplo:

@ControllerAdvice @Controller public class AppBindingInitializer { @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(String.class, new StringTrimmerEditor(true)); } }

Espero que ayude a alguien.


Establezca el valor predeterminado para sus campos opcionales en NULL - en realidad, ¿no es NULL de manera predeterminada?

Analice su cadena de entrada y luego especifique explícitamente solo las columnas rellenas con

usingColumns

Ah, y te aconsejo que siempre desinfecte tus entradas ...