首页 > 解决方案 > Xpages - dominoDocument 的计算属性无法按预期工作

问题描述

在 XPage 上,我定义了一个 dominoDocument 数据源,如下所示:

<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xc="http://www.ibm.com/xsp/custom">
    <xp:this.resources>
        <xp:bundle src="/datasources.properties" var="datasources" />
        <xp:bundle src="/environment.properties" var="env"></xp:bundle>
    </xp:this.resources>
    <xp:this.data>
        <xp:dominoDocument formName="fa_Attachment" var="attachDoc">
            <xp:this.databaseName><![CDATA[#{javascript:return env["srv_notesname"] + "!!" + utilityBean.getFilePath() + "//" + datasources["db_inbox_filepath"]}]]></xp:this.databaseName>
        </xp:dominoDocument>
    </xp:this.data>

在 environment.properties 我列出了键/值对:

# ENVIRONMENT SETTINGS REFERENCES
#
srv_notesname=Server01/Server/ACME

datasource.properties 类似:

# DB Inbox
db_inbox_filepath=inbox.nsf

当我加载 XPage 时,我收到以下消息:

com.ibm.xsp.exception.EvaluationExceptionEx:执行 JavaScript 计算表达式时出错 执行 JavaScript 计算表达式时出错脚本解释器错误,line=1,col=8:[ReferenceError] 'env' not found

我本来希望我可以使数据绑定有点动态,所以我做错了什么?

标签: xpages

解决方案


作为元素子元素的数据源xp:view需要在 beforePageLoad 之前生成其属性。“打印”声明将让您确认这一点,就像我几年前在我的会议上所做的那样“马蒂,你只是没有在第四维度思考”(可​​能仍可作为 TLCC 网站上的网络研讨会)。

使其成为 Panel 的子项将允许您拾取beforePageLoad.

除非范围为request. 所以你可以使用${javascript:...}而不是#{javascript:...}


推荐阅读