簡體   English   中英

從Javascript訪問richfaces樹的選定節點

[英]Accessing selected node of richfaces tree from Javascript

這應該是一個非常簡單的問題。 我有一個使用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函數?

答案是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>

我有一個JSF經驗不多,但是不應該 這樣 (在事件處理的范圍內)來指所選擇的節點,因為它通常在JavaScript中呢?

將您的功能更改為此並嘗試:

 
 
 
 
  
  
  function documentClicked() { alert("Node is " + this); }
 
 
  

編輯:以上顯然不正確。 根據我在下面的評論,將您的JSF更改為

 <rich:tree switchType="client" value="#{ajaxDocumentTree.rootNode}" var="document" onselected="documentClicked(this)" > 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM