【问题标题】:How to show JSF components if list is not null and has size() > 0如果列表不为空并且 size() > 0,如何显示 JSF 组件
【发布时间】:2013-04-27 23:05:12
【问题描述】:

如果列表不是 null 并且它有 size() > 0,我如何显示 JSF 组件?

【问题讨论】:

标签: jsf if-statement el


【解决方案1】:

使用 rendered 属性。大多数组件都有这个属性。这个属性的主要目的是有条件地渲染组件。

<h:dataTable value="#{bean.list}" rendered="{bean.list !=null &amp;&amp; bean.list.size()>0}" >

在上面这段jsf代码中,只有当list不为null且list的大小大于0时才会渲染datatable

【讨论】:

  • 丑陋的&amp;amp;&amp;amp; 可以很容易地被更易读的and 取代。更重要的是,整个双重检查可以很容易地被单个运算符替换:empty
  • @BalusC true, &很丑。正如我在您的问题下评论的那样,我不知道存在空运算符。感谢您的反馈意见。在对我的组件应用条件渲染时,我确实发现使用 &amp 相当难看。 :)
【解决方案2】:

EL 提供了empty 运算符,用于检查对象的空性和空性。

因此,应该这样做:

<h:dataTable value="#{bean.list}" var="item" rendered="#{not empty bean.list}">

不需要像其他答案所建议的那样对nullsize() 进行笨拙的双重检查。

另见:

【讨论】:

  • 嗯,有趣,从不知道 EL 中有 Empty 运算符。 +! :)
【解决方案3】:
<h:outputText value="No Data to Display!" rendered="#{empty list1.List2}" />
<a href="#">
<h:outputText value="Data is present" rendered="#{not empty list1.List2}" /></a>

或者

<h:outputText value="#{not empty list1.List2 ? 'Data is Present' : 'No Data to Display'}" style="color:blue"/>

【讨论】:

  • 这比接受的答案更好(在问题j的上下文中)?
  • @Kukeltje - 它确实添加了有效的替代方案,这很有帮助。
猜你喜欢
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 2018-05-03
相关资源
最近更新 更多