documentId解析代码没有'无法执行XPages



在我的XPage中,我需要设置一个数据源(Domino文档(

我试着这样做:

<xp:this.data>
<xp:dominoDocument var="requestDocument" action="openDocument" databaseName="#{javascript:  print('db ok'); return database.getFilePath();}"
documentId="#{javascript:
print('heloooo');
var conclusion = database.getDocumentByUNID(doc_source.getDocument().getParentDocumentUNID());
var oConclusion = new OsnovaUI_document(conclusion);
var requestDoc = oConclusion.getMainDocument();
print('docID: ' + requestDoc.getUniversalID());
return requestDoc.getUniversalID();
}">
</xp:dominoDocument>
</xp:this.data>

我注意到documentId中的代码部分没有被执行。完全这就是为什么我把heloooo放在那里。然而,databaseName如预期的那样工作。在控制台中,我总是看到

09.03.2020 00:52:11   HTTP JVM: db ok

但并非如此:(

我做错了什么?提前感谢

最可能的原因是ignoreRequestParams未设置为true。除非您设置了这一点,否则数据源将根据URL查询字符串参数(HTTP请求参数(检索要编辑的文档的所有细节。因此,URL查询字符串参数优先,在没有设置任何内容的情况下,这意味着"使用新文档"。如果您已经定义了URL查询字符串参数应该优先,那么运行代码之后只忽略它是低效的。因此,action="openDocument"也被忽略了——如果查询字符串中有一个docId,它会打开它,否则它会创建一个新文档。

当页面首次加载时,documentId只能被处理一次。根据数据源是绑定到面板还是XPage/Custom控件,它也将在beforePageLoad事件之前运行。所以运行时绑定(#{javascript:...(没有任何作用。${javascript:...将避免混淆。

错误处理可能有助于识别是否存在错误。XPages OpenLog Logger是最普遍的(免责声明,我是作者(https://openntf.org/main.nsf/project.xsp?r=project/XPages%20OpenLog%20Logger.

更改要在页面加载($(而不是动态(#(时计算的documentId:

<xp:this.data>
<xp:dominoDocument var="requestDocument" action="openDocument">
<xp:this.documentId><![CDATA[${javascript:
var conclusion = database.getDocumentByUNID(doc_source.getDocument().getParentDocumentUNID());
var oConclusion = new OsnovaUI_document(conclusion);
var requestDoc = oConclusion.getMainDocument();
print('docID: ' + requestDoc.getUniversalID());
return requestDoc.getUniversalID();
}]]></xp:this.documentId>
</xp:dominoDocument>
</xp:this.data>

如果数据库本身就是数据库,则不需要databaseName。

最新更新