2010-02-01 74 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>