XPages sessionScope变量和DateTime值

时间:2017-05-15 12:04:50

标签: datetime xpages xpages-ssjs

当我从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值的格式不同......这可能是问题吗?

example of the sessionScope variable problem

1 个答案:

答案 0 :(得分:4)

NotesDataTime不可序列化,因此您无法将其存储在内存中。使用getComponent("datum").getValue()时,它会返回Java Date而不是NotesDataTime。 Java日期是可序列化的,因此它的工作原理。 尝试将NotesDataTime转换为Java Date。

dt.toJavaDate()