XPages ODA问题,从Java中的字段获取日期值

问题描述 投票:0回答:3

我在我的Java代码中使用ODA(这很棒),但我在从字段中获取日期值时遇到问题。

如果我使用:

DateTime lastApprDt = doc.getItemValue("LastApproved", Date.class);

然后解析器对象并建议“将lastApprDt的类型更改为Date”

如果我将代码更改为:

Date lastApprDt = doc.getItemValue("LastApproved", Date.class);

然后解析器很高兴但是当我运行代码时出现错误:

[ODA :: WARNING]自动装箱请求了com.ibm.security.util.calendar.BaseCalendar $ Date,但是在LastApproved项目中为文档ID 992返回了org.openntf.domino.impl.DateTime

我糊涂了!如果doc.getItemValue(“LastApproved”,Date.class)返回Date类型,那么为什么我会收到错误?

java xpages
3个回答
4
投票

确保lastApprDt Date的类型为java.util.Date(而不是com.ibm.security.util.calendar.BaseCalendar.Date类型)。


0
投票

第一个是失败的,因为它试图将Date对象(getItemValue()的输出)传递给DateTime对象(lastApprDate)。

我不太确定为什么它选择将其作为com.ibm.security.util.calendar.BaseCalendar.Date检索,我在ODA代码中看不到对该类的任何引用。值得检查代码中的import语句,以确保它不是选择com.ibm.security.util.calendar.BaseCalendar.Date作为它认为你想要使用的相关Date类。我怀疑它可能已经完成了。如果是这样,请更改import语句以使用java.util.Date

自动装箱日期的代码查找特定的类以及如何转换它们。 java.util.Date是它所期待的最明显的一个。我最近添加了java.sql.Date,我相信最后的基础9.0.1和第一个FP8版本。 java.util.Calendar是另一个支持的。像LocalDateTime这样的新Java 8 Date类可能看起来很合适,因为它们有更好的时区处理,但是将DateTime时区转换为Java时区并且DateTime中的时区是只读的并不容易,所以它不适用于自动装箱此时此刻。

您不应该将完整的类名称作为第二个参数传递,我已经运行了只传递Date.class的代码。这就是让我怀疑解析器建议已经猜到了你想要的错误类并导入com.ibm.security.util.calendar.BaseCalendar.Date的原因。


0
投票

如果您确定该字段包含日期值,则应该能够获取java.util.Date

Date lastApprDt = doc.getItemValue("LastApproved").get(0).toJavaDate();
© www.soinside.com 2019 - 2024. All rights reserved.