当我从Notes文档(而不是XPage)加载DateTime值时,我似乎在XPages之间丢失了sessionScope变量的值。这是我的工作:
我有一个EditBox,其内容设置为仅键入Date:
<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值的格式不同......这可能是问题吗?
答案 0 :(得分:4)
NotesDataTime不可序列化,因此您无法将其存储在内存中。使用getComponent("datum").getValue()
时,它会返回Java Date而不是NotesDataTime。 Java日期是可序列化的,因此它的工作原理。
尝试将NotesDataTime转换为Java Date。
dt.toJavaDate()