gpt4 book ai didi

xpages - XSP.showDialog 在 onStart 事件中不起作用?

转载 作者:行者123 更新时间:2023-12-02 02:12:55 26 4
gpt4 key购买 nike

我有以下测试 XPage。

<?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”,但仍然相同。

最佳答案

XSP.openDialog()XSP.closeDialog()每个都会触发部分刷新。 XPage 客户端 API 包含用于防止并行执行多个部分刷新操作的逻辑,这可能会阻止您的对话框显示,因为当它尝试运行刷新以显示对话框时,它已经在运行您的按钮事件。

将 JSON-RPC(在控制面板中称为“远程服务”)添加到页面。将按钮的服务器事件代码移至 RPC 的方法。然后,您可以将按钮事件更改为纯客户端:调用 XSP.openDialog() ,然后调用 RPC 方法并在该方法的 onComplete 中关闭对话框。这应该可以防止您当前遇到的竞争状况。

关于xpages - XSP.showDialog 在 onStart 事件中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14812584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com