这应该是一个非常简单的问题。我有一个使用JSF渲染的richfaces树。当用户点击某个节点时,我希望运行一个javascript函数。更不用说了。没有重定向,没有重新提交,没有重新呈现,没有Ajax。只是简单的旧Javascript。
我已经看到了树的 onselected 属性,它确实触发了一个Javascript方法。但当然我想知道点击了哪个节点。
这是我到目前为止所拥有的
<head>
<script type="text/javascript">
function documentClicked(nodeRef)
{
alert("Node is "+nodeRef);
}
</script>
</head>
<rich:tree switchType="client" value="#{ajaxDocumentTree.rootNode}"
var="document" onselected="documentClicked()" >
<rich:treeNode iconLeaf="../images/tree/doc.gif"
icon="../images/tree/doc.gif">
<h:outputText value="#{document.friendlyName}" />
</rich:treeNode>
但这不起作用,因为nodeRef未定义。我预计回调的第一个参数将是所选节点,但事实并非如此。
所以问题是:
如何从richfaces树中使用所选节点触发Javascript函数?
答案 0 :(得分:4)
答案是javascript代码应该在节点级别而不是树级别。
<head>
<script type="text/javascript">
function documentClicked(nodeRef)
{
alert("Node id is "+nodeRef);
}
</script>
</head>
<rich:tree switchType="client" value="#{ajaxDocumentTree.rootNode}"
var="document" >
<rich:treeNode onclick="documentClicked('#{document.id}')">
<h:outputText value="#{document.friendlyName}" />
</rich:treeNode>
答案 1 :(得分:0)
我对JSF没什么经验,但不应该这个(在你的事件处理程序范围内)引用所选择的节点,就像在JavaScript中一样?击>
将您的功能更改为此并尝试一下:
function documentClicked()
{
alert("Node is " + this);
}
击> <击> 撞击> 编辑:以上显然不正确。根据我在下面的评论,将您的JSF更改为
<rich:tree switchType="client" value="#{ajaxDocumentTree.rootNode}"
var="document" onselected="documentClicked(this)" >