Ich habe den Verlust von sessionScope-Variablen zwischen XPages verloren, wenn ich DateTime-Werte aus einem Notes-Dokument lade (nicht von der XPage). Hier ist, was ich tue:XPages sessionScope-Variable und DateTime-Werte
Ich habe eine EditBox, wo der Inhalt festgelegt Datum eingeben nur:
<xp:inputText value="#{document1.datum}" id="datum" defaultValue="#{javascript:@Now()}" required="true">
<xp:this.converter>
<xp:convertDateTime type="date"></xp:convertDateTime>
</xp:this.converter>
<xp:dateTimeHelper></xp:dateTimeHelper>
</xp:inputText>
ich diese dann speichern zu einer sessionScope Variable:
sessionScope.put ("datum", getComponent("datum").getValue());
Dann habe ich ändern XPages, indem Sie ein:
var extCont = facesContext.getExternalContext();
extCont.redirect("xpNextPage.xsp")
ich dann eine sessionScope.get:
print (sessionScope.get ("datum"));
Und der Inhalt ist in Ordnung.
wenn ich das gleiche tun mit einem Dokument, das ich geladen haben:
var date:NotesDateTime = doc.getItemValueDateTimeArray("datum");
var start:NotesDateTime = doc.getItemValueDateTimeArray("von");
var dt:NotesDateTime = session.createDateTime (date [0].getDateOnly() + " " + start [0].getTimeOnly());
sessionScope.put ("datum", dt);
dann auf die nächste Seite wechseln und versuchen, und laden Sie es mit:
print (sessionScope.get ("datum"));
ich einen Wert bekommen null.
Ich habe einen Screenshot des Problems beigefügt (ich habe auch andere Felder gedruckt, damit Sie sehen können, dass nur die DateTime-Felder das Problem sind). Ich stelle fest, dass das Format des DateTime-Wertes anders ist ... könnte das das Problem sein?
Kann versuchen Sie sie speichern als Java Daten an die sessionScope (z ndt.toJavaDate()) anstelle von NotesDateTime. Ich denke, der Session-Bereich funktioniert ähnlich wie Beans, da er serialisierbar sein muss. Die NotesDateTime-Klasse ist nicht serialisierbar. –
danke für den Tipp Rob - das war das Problem - jetzt funktioniert es einwandfrei: o) –
Gern geschehen Ursus. –