有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaJSF丰富:每行呈现的数据列表?

看起来这应该是可能的,但是

使用richfaces和JSF,我正在使用rich:dataList迭代一个列表。。。一切都很好,除了我希望能够有选择地“渲染”每个迭代,这是可能的吗

例如:

<rich:dataList value="#{list}" var="item">
   <h:outputText value="#{item.something}" />
</rich:dataList>

我希望能够有选择地呈现输出,例如,如果'item'的某些属性为true或其他什么

我已经尝试过将outputText包装在outputPanel和类似的文件中,但是如果输出面板没有被渲染,迭代的“<li>”仍然被渲染,因此您会得到一个项目符号,旁边没有任何内容,而不是完全跳过该项目:(

有什么办法解决这个问题还是我是索尔?我意识到通常情况下,我希望事先准备好要显示的项目列表,但出于许多原因,我不想在这里重复,这是不可能的


共 (2) 个答案

  1. # 1 楼答案

    奇怪的行为。我试图用Tomahawk's^{}复制它,我看到了完全相同的行为!你能做的最好的事情就是用^{}替换它,并手动呈现纯HTML <li>元素。比如:

    <ul class="rich-datalist">
        <a4j:repeat value="#{list}" var="item">
            <h:panelGroup rendered="#{item.somecondition}">
                <li class="rich-list-item">
                    <h:outputText value="#{item.something}" />
                </li>
            </h:panelGroup>
        </a4j:repeat>
    </ul>
    

    (我从rich:dataList借用了与here描述的相同的类名,以便保持皮肤)

    然而,我个人会将其标记为bug或至少是不受欢迎的行为,并将其报告给相关组件库后面的男孩I've already done it for Tomahawk

  2. # 2 楼答案

    简单。将渲染属性添加到h:outputText标记

    <rich:dataList value="#{list}" var="item">
        <h:outputText value="#{item.something}" rendered="#{item.isDisplayed}"/>
    </rich:dataList>