XPages sessionScope 变量和 DateTime 值

XPages sessionScope variable and DateTime values

当我从 Notes 文档(而不是从 XPage)加载 DateTime 值时,我似乎正在丢失 XPage 之间的 sessionScope 变量的值。这是我的工作:

我有一个 EditBox,其中的内容设置为仅键入日期:

<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>

然后我将其保存到一个 sessionScope 变量中:

sessionScope.put ("datum", getComponent("datum").getValue());

然后我通过以下操作更改 XPages:

var extCont = facesContext.getExternalContext();
extCont.redirect("xpNextPage.xsp")

然后我做一个 sessionScope.get:

print (sessionScope.get ("datum"));

而且内容还不错。

如果我对已加载的文档执行相同的操作:

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);

然后切换到下一页并尝试加载它:

print (sessionScope.get ("datum"));

我得到一个值null

我附上了问题的屏幕截图(我也打印了其他字段,因此您可以看到只有 DateTime 字段有问题)。我确实注意到 DateTime 值的格式不同...这可能是问题所在吗?

NotesDataTime 不可序列化,因此不能将其存储在内存中。当您使用 getComponent("datum").getValue() 时,它 returns 您 Java 日期而不是 NotesDataTime。 Java 日期是可序列化的,因此可以正常工作。 尝试将您的 NotesDataTime 转换为 Java 日期。

dt.toJavaDate()