2010-02-01 76 views
2

看起來像這樣應該是可能的但是...?JSF rich:dataList每行渲染?

使用richfaces和JSF我使用rich:dataList來遍歷List ...除了我希望能夠選擇性地「呈現」每個迭代,這是可能的嗎?

例如:

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

我希望能夠有選擇性地呈現輸出,例如,如果「項目」的某些屬性爲true或什麼的。

我已經試過包裹outputTextoutputPanel和類似的,但如果輸出面板不會呈現迭代的「<li>」仍然呈現這樣你得到它的旁邊沒有子彈點,而不是它只是跳過項目完全:(

任何方式來解決這個問題或我是SOL嗎?我通常意識到我希望得到的項目清單之前準備好顯示,但由於許多原因,我不打算在這裏重複它isn 't possible。

回答

1

奇怪的行爲。我試圖重現與Tomahawk'st:dataList和我看到完全相同的行爲viour!最好你可以做的是用a4j:repeat替換它,並手動呈現純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> 

我個人不過它標記爲錯誤或至少是不希望的行爲和報表(如描述here,使其保持皮膚我從rich:dataList借用相同的類名)它涉及到組件庫背後的男孩。 I've already done it for Tomahawk

+0

我想到了,但它是有效的包裝'李'面板組?我認爲這將導致HTML這樣的:

  • 東西
這似乎壞 – rat 2010-02-01 18:47:20

+0

嗯都能跟得上似乎並沒有引起周圍的李時珍,感謝一如既往balusc有益的跨度:) – rat 2010-02-01 18:51:56

+0

不客氣。當它*需要*渲染一些**屬性時,它將只呈現'',例如, 'id','style','styleClass'等 – BalusC 2010-02-01 18:54:13

0

簡單。將呈現的屬性添加到h:outputText標記。

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