Ich habe eine Anwendung mit einer Benutzerdomäne, die sich von SecUser (Sicherheitsbenutzerklasse in Spring Secrity Core) erstreckt. In dieser Domäne (Benutzer) habe ich mehrere Felder und eines davon ist: Datum birthDate. Das Gerüst schafft die g: datePicker Tag, aber ich mag den Stil nicht.Datumsfeld in Domäne und g: Text-Tag funktioniert nicht in Grails
Ich würde gerne implementieren, zum Beispiel: Datepicker für Boostrap (http://www.eyecon.ro/bootstrap-datepicker/), aber diese Bibliothek verwendet ein Eingabefeld = "Text" Feld.
Meine Ansicht (.gsp), wenn ich eine Texteingabe setzen, die speichern und aktualisieren Aktionen in meinem Controller nicht, weil arbeiten, wenn ich userInstance.birthDate der Wert null erhalten.
Wenn ich das g: datePicker Tag setze, erhält mein Controller den Wert korrekt.
Wie kann ich dieses Problem lösen? Danke.
EDITED:
Code of Datepicker Bootstrap aus meiner Sicht:
<div class="input-group date date-picker" data-date-format="dd-MM-yyyy" data-date-end-date="+0d">
<input type="text" id="birthDate" name="birthDate" value="${formatDate(format:'dd-MM-yyyy',date: userInstance?.birthDate)}" class="form-control form-shadow"/>
<span class="input-group-btn">
<button class="btn default" type="button">
<i class="fa fa-calendar"></i>
</button>
</span>
</div>
<span class="help-block">
<h5>
<g:message code="custom.date.picker.description" default="Select a date"/>
</h5>
</span>
Jetzt kann ich den Wert in meinem Controller erhalten mit params.birthDate aber dem nächsten Fehler angezeigt:
Class java.text.ParseException
Message Unparseable date: "01-04-2016"
GELÖST:
Die Lösung bestand darin, in Datepicker für die Bootstrap-Bibliothek korrekt zu analysieren. Diese Bibliothek verwendet einen anderen Parser. Zum Beispiel: '2016.01.04' in Grails ist 'dd-MM-yyyy', aber in dieser Bibliothek ist: 'dd-mm-yyyy'.
In diesem Link die Formate angezeigt werden: https://bootstrap-datepicker.readthedocs.org/en/latest/options.html#format
Außerdem ist es notwendig, die folgenden Zeilen in Config.groovy hinzuzufügen:
grails.databinding.dateFormats = [ 'dd-MM-yyyy', 'yyyy-MM-dd', 'yyyy-MM-dd HH:mm:ss.S' ]
Diese Lösung funktioniert nicht, weil ich den gleichen Wert in meinem Controller bekomme: null. Ich kann sehen mit: log.error (userInstance.birthDate). Ich habe meine Frage bearbeitet, um den Code der Eingabe hinzuzufügen. –
@ JesúsIglesias Ihrem Eingabefeld fehlt das 'name' Attribut. daher "Null" in der Steuerung. es sollte '' – injecteer
Jetzt sein. Ich kann den Wert in meinem Controller bekommen, aber ich bekomme den nächsten Fehler: Klasse java.text.ParseException Nachricht Unrated Datum: "01-04-2016" –