在xpage上,我运行以下代码:
function setPersonInfoCommon(x) {
//print("test printing to console value: " + x)
var serv = getPreferenceField("tx_server");
//e.g. "Development1";
var dbname = getPreferenceField("tx_loc_personal_common");
//e.g. "CustomerX\\Personnel.nsf"
var db:NotesDatabase = session.getDatabase(serv,dbname);
if (db == null) {
requestScope.status = "Database not found.";
return;
}
var vw:NotesView = db.getView("LookUpUsersUNID");
if (vw == null) {
requestScope.status = "View not found.";
return;
}
var doc:NotesDocument = vw.getDocumentByKey(x);
if (doc == null) {
requestScope.status = "Document not found.";
return;
}
else{
requestScope.status = "Document created:" + getCreated();
}
}
这冻结了我的XPage,在日志中我看到以下符号: 2014-08-19 12:46:11 HTTP JVM:com.ibm.xsp.webapp.FacesServlet $ ExtendedServletException:com.ibm.xsp.FacesExceptionEx:java.io.NotSerializableException:lotus.domino.local.DateTime 2014-08-19 12:46:11 HTTP JVM:CLFAD0134E:异常处理XPage请求。有关更多详细信息,请参阅位于E:/ Domino / data / domino / workspace / logs中的error-log-0.xml
XPage与我执行getDocumentByKey方法的NSF不同。但是我没有得到任何迹象表明无法找到数据库(db)或视图(vw)。如果我通过输出文件路径或其他东西来检查它,我会得到正确的值。
我测试了从NSF中运行代码我执行了getDocumentByKey方法然后代码运行得很好。
可能是什么原因?
我通过网络登录并拥有适当的权利。
答案 0 :(得分:8)
在发布问题之前,请始终查看指定位置的更详细日志。这些消息提供了更多信息,有助于识别导致问题的代码,通常还有更详细的解释。
在这种特殊情况下,控制台日志上的消息包括" java.io.NotSerializableException:lotus.domino.local.DateTime"。假设这与行requestScope.status = "Document created:" + getCreated();
(详细日志将确认)和getCreated()
实际上是doc.getCreated()
相关,则返回NotesDateTime对象。
NotesDateTime对象和任何其他Domino对象不能放在任何作用域变量中(有各种博客解释Domino对象不可序列化)。
如果您想在范围中添加日期/时间,可以使用NotesDateTime.toJavaDate()
获取等效的Java日期,因此doc.getCreated().toJavaDate()
。