0

有没有人注意到 xpages 中的数据上下文存在问题。在某些情况下,具有多个自定义控件的单个 xpage 会导致在单个页面加载期间对 datacontext 进行 12 次评估?其他数据源也会发生这种情况吗?

这是一个简单的例子,它被执行了 3 次!!

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xe="http://www.ibm.com/xsp/coreex">
    <xp:this.dataContexts>
        <xp:dataContext var="doc1">
            <xp:this.value><![CDATA[#{javascript:var doc:NotesDocument = database.createDocument();
doc.replaceItemValue("Form", "frmContact");
doc.replaceItemValue("fldFirstName", "test");
print("got here");
return doc;}]]></xp:this.value>
        </xp:dataContext>
    </xp:this.dataContexts>
    <xp:inputText id="inputText1" value="#{doc1.fldFirstName}"></xp:inputText>
</xp:view>

我不应该在我的应用程序中使用 dataContexts 吗?

4

3 回答 3

1

就像页面上的其他控件一样,可以多次评估数据上下文。有关dataContexts 的好处的更多信息,请参见此处。但在我看来,从您的代码示例来看,使用 xp:data 源可能会更快,但我不确定。

于 2012-04-10T22:35:08.390 回答
1

与所有其他值绑定一样,如果将 # 更改为 $,可能会多次请求 dataContext 的 value 属性,但确定该值的计算只会执行一次。

于 2012-04-11T04:40:59.093 回答
1

还要注意,如果您使用的是部分刷新。假设,您的数据上下文位于 id B 中,并且您对 id A 进行了刷新。id B 中的数据上下文也将被刷新。所有其他数据源也会发生这种情况。

我在这里描述了这种行为http://www-10.lotus.com/ldd/xpagesforum.nsf/topicThread.xsp?action=openDocument&documentId=56E9B8537DA50A90852579A6002EAC64#FA00DE3675A456C0852579AB005A1FF4

还有一些关于 PMR 的提示和可能的解决方法。

于 2012-04-11T04:55:16.437 回答