XPages - 与ExtLib xe:namepicker结合使用的dojo IO管道

时间:2015-03-26 15:50:11

标签: dojo xpages lotus-domino xpages-extlib

在Domino 9.0.1 FP3中将 dojo IO Pipelines 与ExtLib控件(例如 xe:namepicker )结合使用时,我遇到了一个大问题。

这里有两个场景......

第一个场景的XPage代码(没有xe:namepicker ):

<xp:this.properties>
    <xp:parameter name="xsp.client.script.dojo.djConfig" value="ioPublish:true"></xp:parameter>
</xp:this.properties>

<xp:button value="Partial Refresh" id="button1">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="main" execMode="partial">
        <xp:this.onComplete><![CDATA[doPartialRefreshOf(['tagCloud1', 'tagCloud2']); ]]></xp:this.onComplete>
    </xp:eventHandler>
</xp:button>

<xp:panel id="main" style="background-color:rgb(0,255,64);">CONTENT</xp:panel>
<xp:panel id="tagCloud1" style="background-color:rgb(255,128,0)">TAGCLOUD1</xp:panel>
<xp:panel id="tagCloud2" style="background-color:rgb(128,0,255)">TAGCLOUD2</xp:panel>

<xp:eventHandler event="onClientLoad" submit="false">
        <xp:this.script><![CDATA[dojo.subscribe("/dojo/io/start", function(data){
    console.log("triggered on /dojo/io/start channel");
});
dojo.subscribe("/dojo/io/stop", function(data){
    console.log("triggered on /dojo/io/stop channel");
});]]></xp:this.script>
</xp:eventHandler>

点击“部分刷新”按钮导致以下输出(在Firebug控制台上):

触发/ dojo / io /停止频道

... POST主

... GET tagCloud1

... GET tagCloud2

触发/ dojo / io /停止频道

一切都很完美!


第二种情况的XPage代码( with xe:namepicker ):

<xp:this.properties>
    <xp:parameter name="xsp.client.script.dojo.djConfig" value="ioPublish:true"></xp:parameter>
</xp:this.properties>

<xp:button value="Partial Refresh" id="button1">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="main" execMode="partial">
        <xp:this.onComplete><![CDATA[doPartialRefreshOf(['tagCloud1', 'tagCloud2']); ]]></xp:this.onComplete>
    </xp:eventHandler>
</xp:button>

<xe:namePicker id="namePicker1" for="inputText1" pickerText="NamePicker"></xe:namePicker>

<xp:panel id="main" style="background-color:rgb(0,255,64);">CONTENT</xp:panel>
<xp:panel id="tagCloud1" style="background-color:rgb(255,128,0)">TAGCLOUD1</xp:panel>
<xp:panel id="tagCloud2" style="background-color:rgb(128,0,255)">TAGCLOUD2</xp:panel>

<xp:eventHandler event="onClientLoad" submit="false">
        <xp:this.script><![CDATA[dojo.subscribe("/dojo/io/start", function(data){
    console.log("triggered on /dojo/io/start channel");
});
dojo.subscribe("/dojo/io/stop", function(data){
    console.log("triggered on /dojo/io/stop channel");
});]]></xp:this.script>
</xp:eventHandler>

点击“部分刷新”按钮导致以下输出(在Firebug控制台上):

... POST主

... GET tagCloud1

... GET tagCloud2

如您所见,firebug控制台上没有输出(/ dojo / io / ...)(不会触发dojo / io通道..)


两种方案在Domino 8.5.3 FP6 + Lotus Domino升级包中都非常有效。


任何提示/建议如何解决这个问题?

提前致谢

格奥尔格

1 个答案:

答案 0 :(得分:0)

9.0.1FP3包含Dojo v1.9.4,并且自dojo 1.8以来已弃用dojo / io。这可能是问题的一部分。见这里:http://dojotoolkit.org/reference-guide/1.9/dojo/io.html

您可以尝试使用dojo / request,如该链接中所建议的那样。我不熟悉旧的IO或新的请求包,所以你需要做一些投资。