我有以下測試XPage。XSP.showDialog在onStart事件中不起作用?
<?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:panel id="pagePanel">
<xp:text escape="true" id="didThePageCompile">
<xp:this.value><![CDATA[#{javascript:var d = new Date();
return d.toLocaleString();}]]></xp:this.value>
</xp:text>
<xp:br></xp:br>
<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="dialog1"
onStart="XSP.openDialog('#{id:dialog1}')"
onComplete="XSP.closeDialog('#{id:dialog1}')">
<xp:this.action><![CDATA[#{javascript:var agent = database.getAgent("runLongTime");
var response = agent.run();
// var d = getComponent("dialog1");
// d.show();
}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
<xe:dialog id="dialog1" title="Test Dialog">This is a test dialog</xe:dialog></xp:panel>
</xp:view>
代理「runLongTime」只是睡10秒。這工作正常。當我點擊按鈕但是對話框不顯示。我檢查了源代碼,並且它生成了正確的代碼,並且當我手動將它放入控制檯時,該代碼可以正常工作。
我沒有收到任何錯誤,代理執行得很好。我也嘗試將refreshId更改爲「pagePanel」,但仍然一樣。
'refreshId =「button1」''怎麼樣? – 2013-02-11 14:01:26
不做任何事情。我已將onStart,onComplete更改爲alert('test');這是有效的。 – Herty 2013-02-11 14:21:22
我不認爲這與你的代理'runLongTime'有任何關係。如果我評論代理程序代碼並調用一個簡單的'print'方法,那麼即使我無法打開對話框。我在「XSP.openDialog」之後在我的頁面的源代碼中使用了簡單的'alert'(使用Google Chrome開發人員工具),我可以看到出現對話框的'div'標籤,但是在我的警報上單擊確定後它會消失框。 – Naveen 2013-02-11 14:49:43