richfaces如何避免显示丰富的树图标?

时间:2011-07-03 09:05:45

标签: java jsf richfaces

richfaces如何避免显示丰富的树图标? 我想过滤树,如果一个父亲被填满,他将不会被展示,但他的孩子将因此我需要从defult图标更改为无图标。

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

其中项表示treeNode

1 个答案:

答案 0 :(得分:0)

<rich:tree<rich:treeNode>个组件最终成为table页面中的一组trtdHTML个节点。
通过查看<rich:treeNode>的{​​{3}},您可能会发现<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类。 如果<img>为空,请隐藏这些src代码。