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()
当我从 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()