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

XPages-结合ExtLib xe:namepicker的dojo IO管道,dojo,xpages,lotus-domino,xpages-extlib,Dojo,Xpages,Lotus Domino,Xpages Extlib,在Domino9.0.1FP3中使用DojoIO管道与ExtLib控件(例如xe:namepicker)结合使用时,我遇到了一个大问题 为了说明这两种情况 第一个场景的XPage代码(不带xe:namepicker): 所容纳之物 TAGCLOUD1 TAGCLOUD2 单击按钮“部分刷新”将产生以下输出(在Firebug控制台上): 在/dojo/io/stop通道上触发 邮政总局 得到…tagCloud1 得到…tagCloud2 在/dojo/io/stop通道上触发 一切都很完美

在Domino9.0.1FP3中使用DojoIO管道与ExtLib控件(例如xe:namepicker)结合使用时,我遇到了一个大问题

为了说明这两种情况

第一个场景的XPage代码(不带xe:namepicker):

所容纳之物
TAGCLOUD1
TAGCLOUD2
单击按钮“部分刷新”将产生以下输出(在Firebug控制台上):

在/dojo/io/stop通道上触发

邮政总局

得到…tagCloud1

得到…tagCloud2

在/dojo/io/stop通道上触发

一切都很完美


第二个场景的XPage代码(使用xe:namepicker):

所容纳之物
TAGCLOUD1
TAGCLOUD2
单击按钮“部分刷新”将产生以下输出(在Firebug控制台上):

邮政总局

得到…tagCloud1

得到…tagCloud2

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


这两种方案在Domino8.5.3FP6+LotusDomino升级包中都能完美运行


如何解决这个问题,有什么提示/建议吗

提前谢谢


Georg

9.0.1FP3包含DojoV1.9.4,Dojo/io自Dojo 1.8以来一直被弃用。这可能是问题的一部分。请看这里:


您可以尝试改用dojo/request,正如该链接中所建议的那样。不过,我对旧的IO或新的请求包不是很熟悉,因此您需要做一些调查。

刚才我安装了新版本的扩展库9.0.1(20150311)除了xe:namepicker之外,我还使用xe:valuePicker进行了测试,导致了同样的问题……这似乎是扩展库本身的一个普遍问题,我已经尝试过dojo 1.9.4Dojo/request/notify api。然而,它以另一种方式工作。没有全局启动和停止事件可用,因此我无法将其用于我的需求。但主要的问题是,为什么dojo IO Pipline在不使用ExtLib(例如xe:namepicker)的情况下可以完美工作?谢谢你的回答:)我注意到一件事。如果关闭聚合并更改为在应用程序的xsp.properties中使用“未压缩的JS文件”。然后将断点放在dojo.js的第13058和13060行(这是在9.0.1 GA上)。在没有valuePicker的情况下,单击“部分刷新”按钮后到达第一个断点,并发生控制台输出。添加了valuePicker后,第一个断点在页面加载时到达,没有控制台输出。然后单击“部分刷新”,只到达断点2,再次没有控制台输出感谢您的调查
<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>
<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>