使用XPage中的ClientSide JS将值传递到新窗口

时间:2016-05-20 11:13:53

标签: javascript xpages

我想将4个字段的值传递给使用ClientSide JavaScript的新XPage

在下面找到我到目前为止尝试的内容,我无法将值放入新XPage中的字段:(

// Client Side JS将值传递给新窗口

$this->load->model("login_model","login_model");

$this->load->model("admin/login_model","admin_login_model");

更新1: 我要打开的新页面是在另一个应用程序中。所以我不能携带任何类型的范围的任何值(应用程序,会话等...) 考虑下面的样本。从xspfrmtest.xsp到xspfrmtest2.xsp

  1. Application1.nsf - > xspfrmtest.xsp
  2. Application2.nsf - > xspfrmtest2.xsp

1 个答案:

答案 0 :(得分:1)

这是在客户端上的不同Domino数据库的XPage之间传输(大)字段值的示例:

带有XPage One.xsp的数据库One.nsf:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view
    xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:inputText
        id="fieldOne"></xp:inputText>
    <xp:button
        value="Open Two.xsp in Two.nsf"
        id="button1">
        <xp:eventHandler
            event="onclick"
            submit="false">
            <xp:this.script><![CDATA[
                window.open("http://server1/Two.nsf/Two.xsp", '_blank');
            ]]></xp:this.script>
        </xp:eventHandler>
    </xp:button>
</xp:view>

数据库Two.nsf与XPage Two.xsp:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:eventHandler
        event="onClientLoad"
        submit="false">
        <xp:this.script><![CDATA[
            var fieldOne = window.opener.document.querySelector('[id$=":fieldOne"]');
            if (fieldOne) {
                window.document.getElementById("#{id:fieldTwo}").value = fieldOne.value;
            }
        ]]></xp:this.script>
    </xp:eventHandler>
    <xp:inputText 
        id="fieldTwo"></xp:inputText>   
</xp:view>

第二个XPage使用window.opener onClientLoad获取第一个XPage窗口的句柄,然后从那里读取字段值。