xpages:我的xpage上的自定义addOnLoad事件

时间:2014-07-31 07:32:58

标签: xpages xpages-ssjs

情景:

点击链接,我访问了xpage,请说:start.xsp

我已将以下脚本添加到此.xsp:

<xp:scriptBlock id="scriptBlock1">
        <xp:this.value><![CDATA[
        XSP.addOnLoad(function(){
            XSP.openDialog("#{id:dialogSearch}")
        });
    ]]></xp:this.value>
    </xp:scriptBlock>

因此,每次加载此.xsp时,都会显示一个对话框。问题是当前start.xsp被刷新/加载多次,考虑到xpage上有许多字段/控件。每次start.xsp加载/刷新出现的对话框时都会感到不舒服。

是否可以在加载start.xsp后显示对话框但仅在单击上述链接时显示?我首先想要转到那个xpage,然后再显示相应的对话框。

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

在链接中设置会话范围变量

<xp:link
    escape="true"
    text="Link"
    id="link1">
    <xp:eventHandler
        event="onclick"
        submit="true"
        refreshMode="complete">
        <xp:this.action><![CDATA[#{javascript:
            sessionScope.showDialogSearch = "yes"; 
            context.redirectToPage("start.xsp")
        }]]></xp:this.action>
    </xp:eventHandler>
</xp:link>

将一个呈现的属性添加到start.xsp的xp:scriptBlock

    <xp:this.rendered><![CDATA[#{javascript:
        var show = sessionScope.showDialogSearch;
        sessionScope.remove("showDialogSearch"); 
        return show
    }]]></xp:this.rendered>

这种方式只有在你的链接执行start.xsp时才显示对话框,因为它在第一次使用渲染属性时会被删除。