我发现这很奇怪,但我无法从扩展库对话框的“DOJO”事件“onHide()”和“onShow()”获得任何输出。我只是想访问一个viewScope变量并在对话框的“onHide()”事件中为它设置一些值,但这似乎不起作用。即使是简单的print()语句也没有在“onHide()”或“onShow()”事件中执行。是否有任何需要更改的设置或需要添加的其他设置才能使这些事件生效?我错过了什么吗?这是代码:
<xp:eventHandler event="onHide" submit="true" refreshMode="complete">
<xe:this.action><![CDATA[#{javascript:
//Pass the ratings to the parent window
var glVect = viewScope.get("Goal_Rate_data");
print(glVect[0][0] + "@@@" + glVect[0][1] + "@@@" + glVect[0][2]);
glVect.get(0).setElementAt("testing assignment",1);
}]]></xe:this.action>
</xp:eventHandler>`
答案 0 :(得分:0)
你说他们是Dojo事件是正确的,所以只有CSJS。从我的XPages扩展库书的章节 - “onShow和onHide事件在显示对话框之前或对话框关闭之前触发客户端JavaScript。”我担心服务器端的Javascript代码无法在那里工作。
您可以在隐藏时触发部分刷新。这是XPages团队为我们提供的一些高级功能,为CSJS隐藏方法提供了第二个参数,也是SSJS隐藏方法的唯一参数。基本上所做的就是调用Dojo客户端Javascript隐藏方法并在要刷新的区域上触发XSP.partialRefreshGet()。