执行getDocumentByKey方法时的HTTP JVM:CLFAD0134E

时间:2014-08-19 11:11:31

标签: xpages xpages-ssjs

在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方法然后代码运行得很好。

可能是什么原因?

我通过网络登录并拥有适当的权利。

1 个答案:

答案 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()