【问题标题】:Server Date and Time on Action In SSJSSSJS 中的服务器操作日期和时间
【发布时间】:2015-11-19 17:45:04
【问题描述】:

我希望您帮助获取执行操作时的服务器日期和时间。例如提交、批准、拒绝等

var myDoc:NotesDocument = data_source.getDocument().

我已尝试关注但未能获取服务器时间,这始终存储客户端日期和时间,特别是在客户端执行时。

myDoc.replaceItemValue("ApprovedOn", session.createDateTime(@Now());

以下会产生错误/异常。

myDoc.replaceItemValue("ApprovedOn", @Now());

var curr_Date = @Now();
myDoc.replaceItemValue("ApprovedOn", curr_Date);

var mDt:NotesDateTime = session.createDateTime(@Now());
myDoc.replaceItemValue("ApprovedOn", mDt.toJavaDate());

执行 JavaScript 动作表达式时出错

脚本解释器错误,行=168,列=17:[TypeError] 异常 发生调用方法 NotesDocument.replaceItemValue(string, Date) 空

请指导我如何在执行任何操作时将当前服务器日期存储在日期和时间字段中。感谢您的时间和努力。

【问题讨论】:

  • 您确定 myDoc 设置正确吗?消息说它是空的。
  • 我认为是因为 NotesDocument.replaceItemValue(string, Date) 不作为方法存在,所以方法为空,而不是文档。
  • @PaulStephenWithers 是的,这适用于 XPiNC 和 Web。此外,相同的函数 NotesDocument.replaceItemValue(string, Date) 在 session.createDateTime(@Now()) 和存储客户端日期和时间时效果很好.

标签: xpages


【解决方案1】:

AFAIK,SSJS 只能在 XPages 运行时内运行。对于通过浏览器访问的 XPages 应用程序,XPages 运行时位于服务器上的 HTTP 任务之上,因此日期和时间将是服务器的。 (这就是我问上述问题的原因)。

要使用核心 Domino API 设置字段值,您需要传递 NotesDateTime。 NotesDocument SSJS 类(映射到底层 Java Document 类)不允许您传递 Java 日期。 OpenNTF Domino API 允许您传递 Java 日期并自动转换该值。

XPiNC 的最佳方法(这来自 Serdar Basegmez,我不能相信)是在 SSJS 中访问基于服务器的数据库,调用 createDocument() 方法并访问它的创建日期。在 getDatabase() 方法中,您必须明确命名服务器。这会对性能产生影响,因为 XPiNC 在本地运行,因此您从本地连接到另一台服务器,但可以正常工作。

【讨论】:

  • 感谢您的及时支持。你的意思是相同的代码在 Web 浏览器上完全正常(平均服务器日期和时间)并返回客户端时间 XPiNC 对吗?如何使用 OpenNTF Domino API 在 XPiNC 中使用服务器日期和时间。下面的语句没问题,但是客户端日期和时间 XPiNC myDoc.replaceItemValue("ApprovedOn", session.createDateTime(@Now());
  • ODA 没有提供任何用于检索服务器日期的选项,仅用于将 Java 日期传递到 Notes 项中。
  • 谢谢,所以在 XPiNC 上执行 SSJS 代码时我无法获取服务器日期和时间?
  • 我已经用可能的解决方案更新了我的原始答案
  • 谢谢,但我可以在我正在工作的同一个数据库中创建文档,并且不会保存文档。将获得该文档的创建日期,并将在我的代码中使用相同的日期。对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多