Outline中的Onclick事件在页面打开时执行

时间:2013-02-07 18:20:53

标签: xpages

我有一个扩展库大纲控件。我在大纲中有两个basicLeafNodes。每个节点上的onclick事件应该运行一些代码。问题是当页面打开时正在执行那些onClick事件,但是当你实际点击节点时似乎没有执行。

知道可能出现什么问题吗?

<xe:outline id="outline1">

<xe:this.treeNodes>
        <xe:basicLeafNode label="Set Value 1">
            <xe:this.onClick><![CDATA[#{javascript:getComponent("inputText1").value = "123";}]]></xe:this.onClick>
        </xe:basicLeafNode>
        <xe:basicLeafNode label="Set Value2">
            <xe:this.onClick><![CDATA[#{javascript:getComponent("inputText2").value = "456";}]]></xe:this.onClick>
        </xe:basicLeafNode>
    </xe:this.treeNodes>

</xe:outline>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>Value 1:&#160;
<xp:inputText id="inputText1"></xp:inputText>
<xp:br></xp:br>Value 2:&#160;
<xp:inputText id="inputText2"></xp:inputText>

1 个答案:

答案 0 :(得分:4)

basicLeafNode的onClick事件仅适用于客户端JS。您需要使用每个basicLeafNode的submitValue属性,然后将SSJS添加到outline控件的onItemClick事件中。然后,您可以使用context.getSubmittedValue()来检查单击的节点,然后相应地执行操作:

<xe:outline id="outline1">
    <xe:this.treeNodes>
        <xe:basicLeafNode label="Set Value 1" submitValue="1"></xe:basicLeafNode>
        <xe:basicLeafNode label="Set Value2" submitValue="2"></xe:basicLeafNode>
    </xe:this.treeNodes>
    <xe:this.onItemClick><![CDATA[#{javascript:
        if (context.getSubmittedValue() == "1") {
            getComponent("inputText1").value = "123"
        } else if (context.getSubmittedValue() == "1") {
            getComponent("inputText2").value = "456"
        }
    }]]></xe:this.onItemClick>
</xe:outline>

从XPages Extension Library一书(第240页):

  

onClick属性允许开发人员执行一部分   客户端JavaScript代码和submit-Value属性允许   开发人员指定传递回服务器的值。这个   从控件的onItemClick事件访问value   包含树节点。