Xpages - вычислить свойства для dominoDocument не работает должным образом - PullRequest
0 голосов
/ 01 ноября 2018

на 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 Вычисленное выражение Ошибка интерпретатора скрипта, строка = 1, столбец = 8: [ReferenceError] 'env' не найден

Я бы ожидал, что смогу сделать привязку данных немного динамичной, так что я делаю не так?

1 Ответ

0 голосов
/ 01 ноября 2018

Источники данных, которые являются дочерними элементами элемента xp:view, должны иметь свои свойства, сгенерированные перед beforePageLoad . «Печатные» заявления позволят вам подтвердить, что, как я делал для своей сессии несколько лет назад, «Марти, вы просто не думаете четвертого измерения» (вероятно, все еще доступно в виде вебинара на веб-сайте TLCC).

Сделав его дочерним элементом Panel, вы сможете подобрать вещи, установленные в beforePageLoad.

Источники данных не могут быть изменены в течение жизни страницы, если они не ограничены значением request. Таким образом, вы можете использовать ${javascript:...} вместо #{javascript:...}

...