【问题标题】:JSF rich:dataList rendered per row?JSF 丰富:每行呈现的数据列表?
【发布时间】:2010-02-01 16:34:00
【问题描述】:

这似乎应该是可能的,但...?

使用richfaces 和JSF,我正在使用rich:dataList 对列表进行迭代......一切都很好,只是我希望能够选择性地“渲染”每次迭代,这可能吗?

例如:

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

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

我尝试将outputText 包装在outputPanel 和类似的东西中,但如果输出面板未呈现,则迭代的“&lt;li&gt;”仍会呈现,因此您会得到一个没有任何内容的项目符号而不是完全跳过该项目:(

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

【问题讨论】:

    标签: java jsf richfaces datalist


    【解决方案1】:

    奇怪的行为。我试图用Tomahawk'st:dataList 重现它,我看到的行为完全相同!您可以做的最好的事情是用a4j:repeat 替换它并手动呈现纯HTML &lt;li&gt; 元素。比如:

    <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 所述相同的类名,以便保留皮肤)

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

    【讨论】:

    • 我想到了,但是用面板组包装“li”是否有效?我认为它会导致 HTML 像:
      • stuff
      这似乎很糟糕
    • hmmm nope 似乎不会导致围绕 li 的跨度,感谢 balusc 一如既往的帮助:)
    • 不客气。它只会在它需要渲染一些属性时渲染&lt;span&gt;,例如idstylestyleClass
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-19
      • 2011-07-18
      • 1970-01-01
      • 2011-02-11
      • 2011-04-03
      • 1970-01-01
      • 2013-07-01
      相关资源
      最近更新 更多