我有一个带有 Tomahawk 数据表的页面。在它的“值”标签上,我调用了一个从某个 EJB 获取列表的方法,如果它为空,我必须在页面上显示一些消息。逻辑有效,它执行我创建的在屏幕上显示消息的方法,但它不会在页面上呈现消息。恐怕这与 JSF 的生命周期有关。在这种情况下我可以做任何解决方法吗?
先感谢您。
我有一个带有 Tomahawk 数据表的页面。在它的“值”标签上,我调用了一个从某个 EJB 获取列表的方法,如果它为空,我必须在页面上显示一些消息。逻辑有效,它执行我创建的在屏幕上显示消息的方法,但它不会在页面上呈现消息。恐怕这与 JSF 的生命周期有关。在这种情况下我可以做任何解决方法吗?
先感谢您。
通常的方法是利用rendered
属性。
<h:outputText value="List is empty" rendered="#{empty bean.list}" />
<t:dataTable value="#{bean.list}" rendered="#{not empty bean.list}">
...
</t:dataTable>
empty
EL 关键字将评估何时true
为bean.list
空或null
。
也就是说,在 getter 中执行 EJB 逻辑是一个非常糟糕的主意。Getter 仅用于返回数据,并且可以在 bean 的生命周期中多次调用。@PostConstruct
而是在 bean 的方法中做 EJB 的东西。