2011-07-03 33 views
3

richfaces如何避免顯示豐富的樹圖標? 我想過濾樹,如果一個父親填補他不會被showen,但他的孩子會,所以我需要改變從defult圖標到無圖標。richfaces如何避免顯示豐富的樹形圖標?

<rich:treeNode type="regularNode" 
       icon="#{item.toShow?item.icon:'null'}" rendered="#{item.toShow}"> 

其中項目代表一個TreeNode

+1

您正在使用哪個版本的RichFaces? –

回答

0

<rich:tree<rich:treeNode>組件終於變成了一堆tabletrtd節點HTML頁。
通過查看<rich:treeNode>component reference document,您可能會發現<rich:treeNode>組件圖標的預定義樣式類名稱爲rich-tree-node-icon

是的,這是您應該覆蓋以更改圖標樣式的樣式類。
但是在您的情況下,您不需要隱藏所有<rich:treeNode>的圖標。所以應該做些棘手的事情。
這只是你可以做的一個技巧。

您知道,您可以使用這樣的EL來指定樹節點的圖標。所以首先要做。

<rich:treeNode icon="#{myNode.nodeIcon}" 

其中myNode表示treeNodegetNodeIcon()方法返回路徑圖像。對於需要隱藏其圖標的treeNode,此方法應返回空字符串。
好的,現在把這個javascript關閉</rich:tree>標籤。

<script> 
    var imgs = document.getElementsByTagName('img'); 
    for(var i = 0; i &lt; imgs.length; i++) { 
     var iconFound = imgs[i].parentNode.getAttribute('class').indexOf('rich-tree-node-icon') >= 0; 
     var imgSrc = imgs[i].getAttribute('src'); 
     if(iconFound &amp;&amp; (imgSrc == '')) { 
      imgs[i].style.display = 'none'; 
     } 
    } 
</script> 

就是這樣。
注意:這個腳本是做什麼的?
它找到<img> s,其父母的風格類包含rich-tree-node-icon類。 然後如果src爲空,則隱藏那些<img>標籤。