2017-08-16 24 views
0

我在Java代碼中使用ODA(這非常棒),但是我無法從字段中獲取日期值。XPages從Java中的字段中獲取日期值的ODA問題

如果我使用:

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

然後解析器對象,如果我的代碼更改建議 「以更改日期類型lastApprDt的」

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

然後解析器很高興,但是當我運行代碼時,出現錯誤:

[ODA::WARNING] Auto-boxing requested a com.ibm.security.util.calendar.BaseCalendar$Date but is returning a org.openntf.domino.impl.DateTime in item LastApproved for document id 992

我很困惑!如果doc.getItemValue(「LastApproved」,Date.class)返回一個Date類型,那麼爲什麼我會得到錯誤?

+1

確保Date是java.util.Date(而不是com.ibm.security.util.calendar.BaseCalendar.Date)。 –

+0

謝謝佩爾,那工作。我犯了使用Eclipse建議的類的錯誤:) – Rob

+0

每個,請你可以添加您的評論作爲答案,所以我可以標記爲接受。謝謝。 – Rob

回答

4

確保lastApprDt日期是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類。我懷疑它可能已經完成。如果是這樣,請更改導入語句以使用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

正如你所猜測的,我選擇導入'com.ibm.security.util.calendar.BaseCalendar.Date',因爲這就是解析器的建議。我已經對自己做了一個說明,希望以後不要那麼信任! :d – Rob

0

如果確定該字段包含你應該能夠得到java.util.Date

Date lastApprDt = doc.getItemValue("LastApproved").get(0).toJavaDate();