在Xpages中将事件的所有属性中的事件与事件处理成事件处理程序

mik*_*_x_ 1 events lotus-notes lotus-domino xpages

我试图理解控件的"所有属性"选项卡中存在的事件(onclick,onfocus等等)与控件的事件处理程序中的相同事件之间的区别.

当尝试在"所有属性onclick"中添加客户端或服务器代码时,它在页面加载时执行,甚至我尝试做任何事情......(对于onfocus,onkeydown等,它们都立即在页面加载时执行).

任何解释?(或链接扩展)(当然我总是与事件处理程序一起工作,我很好,但是......我只是想知道.)

Ser*_*mez 5

基本上,您添加到组件属性中的事件是HTML组件的本机事件.您只能在此处运行客户端javascript.

<input type="text" onchange="doStuff()" class="xspInputFieldEditBox" name="view:_id1:inputText1" id="view:_id1:inputText1">
Run Code Online (Sandbox Code Playgroud)

添加到eventHandler事件中的事件是绑定事件.XPages有一个eventHandler渲染器,它创建一个javascript函数,并通过XSP.attachEvent加载方法将其附加到组件中.

事件处理程序还按顺序提供多个CSJS事件.因此,您可以通过返回false来停止其余代码.例如:

<xp:eventHandler
    event="onchange"
    submit="false">
    <xp:this.script>
        <xp:scriptGroup>
            <xp:executeClientScript
                script="if(! confirm('Confirm the next action?')) return false;"></xp:executeClientScript>
            <xp:executeClientScript
                script="doStuff();"></xp:executeClientScript>
        </xp:scriptGroup>
    </xp:this.script>
</xp:eventHandler>
Run Code Online (Sandbox Code Playgroud)

如果用户在确认对话框上单击取消,则此脚本组将停止.

此事件机制具有其他功能.除了对验证,部分执行等的控制之外,它还可以创建返回服务器的GET/POST ajax请求(通过托管bean或SSJS的服务器端代码)和页面上的部分/完全刷新.