SSJS代码不会在XPages onclick中执行



在我的代码中,我有以下事件处理程序

<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" disableValidators="true"
refreshId="#{javascript:compositeData.refreshid}">
<xp:this.script><![CDATA[
alert('clicked');
]]></xp:this.script>
<xp:this.action><![CDATA[#{javascript:print("jkafkjsfjk");}]]></xp:this.action>
</xp:eventHandler>

不幸的是,我从未在控制台中打印过jkafkjsfjk,而CSJS代码运行良好,并且弹出了点击警报。

我知道不执行它的最常见原因是一些必需的字段等于null或为空。

然而,我已经注释掉了所有内容,但代码无论如何都没有执行。。

我该如何解决,原因是什么?

提前谢谢。

有几件事。。。

首先,如果你的CSJS返回false,那么SSJS就永远不会运行(当你想让用户确认时,这很方便…(。我想你在这里应该没事,但为了安全,你可以返回true。。。。

其次,部分刷新、刷新id和部分执行可能会做一些与您预期不一样的事情。因此,对于测试,我只需要进行完全刷新并跳过id。

事件处理程序设置在什么类型的对象上?

我通常对链接或按钮使用此类事件处理程序,如:

<xp:button value="Add zone" id="button2" styleClass="btn-xs btn-primary">
<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="fields">
<xp:this.action><![CDATA[#{javascript:AssociationAdmin.createZone()}]]></xp:this.action>
</xp:eventHandler>
</xp:button>

这很好:-(

下面是一个先确认的例子:

<xp:link escape="true" text="Delete" id="link5" styleClass="action" rendered="#{javascript:!AssociationAdmin.isCatchInfoInUse(row.getKey())}">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete" id="eventHandler5">
<xp:this.action><![CDATA[#{javascript:AssociationAdmin.removeCatchInfo(row.key);}]]></xp:this.action>
<xp:this.script><![CDATA[return window.confirm("Are you sure you want to delete these fields: #{javascript:row.getName()}?nnDeletion cannot be undone!!")]]></xp:this.script>
</xp:eventHandler>
</xp:link>

进一步说明:

您可能希望在不进行验证的情况下提交。您可以通过将disableValidators="true"添加到事件处理程序来完成此操作

请记住在控件上有一个id,用于事件处理程序。只是浪费了一个晚上和早上的时间,因为按钮打开对话框没有出现最奇怪的行为,id属性

希望这些样品能让你走下去:-(

/约翰·

最新更新