【问题标题】:XPages sessionScope variable and DateTime valuesXPages sessionScope 变量和 DateTime 值
【发布时间】: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


【解决方案1】:

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

dt.toJavaDate()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多