2011-07-03 37 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>标签。