【发布时间】:2017-05-15 20:28:13
【问题描述】:
当我从 Notes 文档(而不是 XPage)加载 DateTime 值时,我似乎丢失了 XPage 之间的 sessionScope 变量的值。这是我的工作:
我有一个编辑框,其中的内容设置为仅输入日期:
<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());
然后我通过执行以下操作更改 XPage:
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 值的格式不同......这可能是问题吗?
【问题讨论】:
-
您可以尝试将它们作为 Java 日期存储到 sessionScope(例如 ndt.toJavaDate() )而不是 NotesDateTime。我认为 Session 范围的工作方式类似于 bean,因为它需要可序列化。 NotesDateTime 类不可序列化。
-
感谢 Rob 的提示 - 这就是问题所在 - 现在它运行良好 :o)
-
不客气,Ursus。
标签: datetime xpages xpages-ssjs