Ich möchte ein Datumsfeld auf meiner Seite wie folgt einrichten
%Vor%wo Stunden und Minuten in getrennten InputText sind.
Die Bohne hat dieses Datum
%Vor%und die Seite ist
%Vor%Aber das Problem ist, dass wenn ich das Formular abschicke nur das letzte Element gespeichert wird. Wenn ich zum Beispiel die Stunden und dann die Minuten eintippe, werden die Stunden überschrieben und das Ergebnis ist
%Vor%Ich habe versucht,
zu setzen %Vor%aber ich bekomme ein
%Vor%Ich möchte mein Datumsfeld nicht durch zwei int-Felder ersetzen (Stunden und Minuten ...) Hast du eine Idee?
Danke
Dieser spezielle Fall ist nicht möglich, wenn Sie einen einzelnen Modellwert verwenden möchten.
Dies ist jedoch ein perfekter Kandidat für eine Composite-Komponente . Sie können einen einzelnen Modellwert an eine Gruppe eng verwandter vorhandener Komponenten binden und die Verarbeitung / Konvertierung in der Backing-Komponente ausführen, die vollständig von der Ansicht und der Backing-Bean abgekoppelt ist. Eines der Beispiele finden Sie in diesem Artikel: Composite-Komponente mit mehreren Eingabefeldern . Dieses Beispiel kann für Ihren speziellen Fall wie folgt geändert werden:
/resources/components/inputTime.xhtml
:
com.example.InputTime
Verwendung:
%Vor%Sie benötigen zwei separate Setter-Methoden in der Bean und führen dann die Zusammenführung auf dem Server durch.
%Vor%Beide müssen Datumswerte erhalten, daher können Sie mit einem JAVA-Kalender arbeiten, der beide Felder in der Aktion einstellt, die von Ihrem Formular aufgerufen wird.
%Vor%Achten Sie bei Bedarf auf Zeitzonen.