【问题标题】:richfaces how to avoid displaying rich tree icon?richfaces如何避免显示富树图标?
【发布时间】:2011-07-03 09:05:45
【问题描述】:

richfaces 如何避免显示富树图标? 我想过滤树,如果一个父亲被过滤,他不会被显示,但他的孩子会,所以我需要从默认图标更改为无图标。

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

项目代表一个树节点

【问题讨论】:

  • 您使用的是哪个版本的 RichFaces?

标签: java jsf richfaces


【解决方案1】:

&lt;rich:tree&lt;rich:treeNode&gt; 组件最终在HTML 页面中变成了一堆tabletrtd 节点。
通过查看&lt;rich:treeNode&gt;component reference document,您可能会发现&lt;rich:treeNode&gt; 组件的图标的预定义样式类名称为rich-tree-node-icon

是的,这是您应该覆盖以更改图标样式的样式类。
但是,在您的情况下,您不需要隐藏所有&lt;rich:treeNode&gt;s 的图标。所以应该做一些棘手的事情。
这只是您可以做的一个技巧。

您知道您可以像这样使用EL 来指定树节点的图标。所以先做吧。

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

其中myNode 表示treeNodegetNodeIcon() 方法返回图像的路径。对于需要隐藏图标的treeNodes,此方法应返回一个空字符串。
好的,现在把这个javascript 放在 关闭 &lt;/rich:tree&gt; 标签之后。

<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>

就是这样。
注意:这个脚本有什么作用?
它找到 &lt;img&gt; s,其中他们的父样式类包含 rich-tree-node-icon 类。 如果src 为空,则隐藏那些&lt;img&gt; 标签。

【讨论】:

    猜你喜欢
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 2011-10-15
    • 2011-03-25
    • 2015-08-16
    • 2018-03-29
    相关资源
    最近更新 更多