情景:
点击链接,我访问了xpage,请说:start.xsp
。
我已将以下脚本添加到此.xsp:
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
XSP.addOnLoad(function(){
XSP.openDialog("#{id:dialogSearch}")
});
]]></xp:this.value>
</xp:scriptBlock>
因此,每次加载此.xsp时,都会显示一个对话框。问题是当前start.xsp
被刷新/加载多次,考虑到xpage上有许多字段/控件。每次start.xsp加载/刷新出现的对话框时都会感到不舒服。
是否可以在加载start.xsp
后显示对话框但仅在单击上述链接时显示?我首先想要转到那个xpage,然后再显示相应的对话框。
感谢您的时间。
答案 0 :(得分:2)
在链接中设置会话范围变量
<xp:link
escape="true"
text="Link"
id="link1">
<xp:eventHandler
event="onclick"
submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:
sessionScope.showDialogSearch = "yes";
context.redirectToPage("start.xsp")
}]]></xp:this.action>
</xp:eventHandler>
</xp:link>
将一个呈现的属性添加到start.xsp的xp:scriptBlock
<xp:this.rendered><![CDATA[#{javascript:
var show = sessionScope.showDialogSearch;
sessionScope.remove("showDialogSearch");
return show
}]]></xp:this.rendered>
这种方式只有在你的链接执行start.xsp时才显示对话框,因为它在第一次使用渲染属性时会被删除。