我有一个扩展库大纲控件。我在大纲中有两个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: 
<xp:inputText id="inputText1"></xp:inputText>
<xp:br></xp:br>Value 2: 
<xp:inputText id="inputText2"></xp:inputText>
答案 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 包含树节点。