SSJS代码不在XPages onclick中执行

SSJS代码不在XPages onclick中执行,xpages,lotus-notes,lotus-domino,xpages-ssjs,ssjs,Xpages,Lotus Notes,Lotus Domino,Xpages Ssjs,Ssjs,在我的代码中,我有以下事件处理程序 <xp:eventHandler event="onclick" submit="true" refreshMode="partial" disableValidators="true" refreshId="#{javascript:compositeData.refreshid}"> <

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

<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将永远不会运行(这在您希望用户确认时非常方便…)。我想你应该在这里没事,但你可以回到真实的安全

第二,部分刷新、刷新ID和部分执行可能会做一些您所期望的事情。所以对于测试,我只需要做一个完整的刷新并跳过id

eventhandler设置在什么类型的对象上

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

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

进一步说明:

您可能希望提交而不进行验证。您可以通过将
disableValidators=“true”
添加到eventhandler来实现这一点

请记住在拥有eventhandler的控件上有一个
id
。只是浪费了一个晚上和一个早上,因为按钮打开对话框没有和
id
attributeee

希望这些样品能让您满意:-)

/约翰

有几件事

首先,如果您的CSJS返回false,那么SSJS将永远不会运行(这在您希望用户确认时非常方便…)。我想你应该在这里没事,但你可以回到真实的安全

第二,部分刷新、刷新ID和部分执行可能会做一些您所期望的事情。所以对于测试,我只需要做一个完整的刷新并跳过id

eventhandler设置在什么类型的对象上

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

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

进一步说明:

您可能希望提交而不进行验证。您可以通过将
disableValidators=“true”
添加到eventhandler来实现这一点

请记住在拥有eventhandler的控件上有一个
id
。只是浪费了一个晚上和一个早上,因为按钮打开对话框没有和
id
attributeee

希望这些样品能让您满意:-)


/约翰

你好,约翰非常感谢你的回答。事实上,问题仍然与一些输入有关(可能是空的或空的)。。。因此,我设置为
exemode=partial
,并分别提供了必要的ID。然而,我不知道控制的问题是什么。我无法使用完全刷新模式执行。好的,只是更新了一些您可以尝试的内容。您好John非常感谢您的回答。事实上,问题仍然与一些输入有关(可能是空的或空的)。。。因此,我设置为
exemode=partial
,并分别提供了必要的ID。然而,我不知道控制的问题是什么。我无法使用完全刷新模式执行。好的,只是更新了一些您可以尝试的内容。