[SSage代码未在XPages onclick中执行

问题描述 投票:0回答:1

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

<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>

[不幸的是,当CSJS代码正常工作并且弹出单击警报时,我从未在控制台中打印jkafkjsfjk

我知道不执行它的最常见原因与某些必填字段(等于null或空)有关。

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

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

提前感谢。

xpages lotus-notes lotus-domino xpages-ssjs ssjs
1个回答
1
投票

几件事...

[首先,如果您的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()}?\n\nDeletion cannot be undone!!")]]></xp:this.script>
    </xp:eventHandler>
</xp:link>

希望这些示例可以帮助您:-)

/ John

© www.soinside.com 2019 - 2024. All rights reserved.