Gibt es eine einfache Möglichkeit zu drehen, leere Formularfelder in null-strings in Spring MVC?
Ich bin mit Spring MVC und SimpleJdbcInsert zum einfügen von Objekten in eine MySQL-Datenbank. Ich möchte, um die leeren Eingang zu NULL
in der Datenbank statt ''
. Ich habe durchaus ein paar Felder, und ich bin der Hoffnung, für ein Weg, dies zu tun, die Sie nicht manuell überprüfen, jeden Wert.
Dank!
UPDATE
So, ich bin ein idiot. Mehrere Fehler kombiniert meinerseits führte mich zu glauben, dass die richtigen Antworten nicht richtig waren. Ich hatte geschrieben PropertyEditorSupport wie diese:
class StringEditor extends PropertyEditorSupport {
public void setAsText(String text) {
String value = text.trim();
if ("" == value) {
setValue(null);
} else {
setValue(value);
}
}
}
Es gibt zwei Probleme:
- keine getAsText, so meine form war immer ausgefüllt mit "null" - strings!
- mein Gleichheit überprüfen, ist C++, nicht Java. Als ich versuchte, die empfohlen
setter, die ich gerade neu geladen, die post, die bereits die "null"
strings. Einmal habe ich gereinigt alle, die sich, angefangen hat alles funktioniert.
Danke für die Hilfe, und sorry für mein "Bediener-Fehler"!
Brett
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Klasse, die Sie suchen:
Wenn Sie bauen es mit einem
true
es wird konvertiert, leer - /Leerzeichen-strings auf null. Wie man es registriert auf den binder, hängt davon ab, wenn Sie es wollen, die standardmäßig verwendet werden oder nur in bestimmten Ansichten.z.B., auf einem einzigen controller können Sie einfach fügen Sie
Anleitung hier
@InitBinder
können nur konfigurieren Bindung von@ModelAttribute
annotierten Parameter. Es ist nutzlos für@RequestBody
annotierten Parameter.Ich weiß, das ist alt, aber ich verlor etwa 2 oder 3 Stunden, bis ich fand eine sehr einfache Möglichkeit, um eine
StringTrimmerEditor
mit einem binder für alle meine Controller.Immer wieder: ich muss daran erinnern, RTFM.
Im Frühjahr 3.2 erstellen Sie eine
@ControllerAdvice
-annottated controller-Klasse und verwenden Sie die@InitBinder
-annotierten Methode genauso wie beispielsweise @Affe gab.http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann-initbinder-advice
Hier ist ein Beispiel:
Hoffe, es hilft jemand.
@Controller
und@ControllerAdvice
Anmerkungen auf der gleichen Bohne?Vielleicht können Sie ein benutzerdefinierte Binder
null
String?Strings == "null"
; was machst du? Bauen Sie eine SQL-Zeichenfolge, wenn so DONT. Verwenden Sie eine Preprable.Legen Sie die Standardwerte für das optionale Felder NULL - eigentlich ist es nicht standardmäßig NULL?Analysieren Sie Ihre Eingabe-Zeichenfolge und geben Sie dann explizit nur die besiedelten Spalten mit
oh, und ich würde empfehlen immer desinfizieren Ihre Eingaben...