有不同的方法可以实现这一目标。首先,您必须定义“何时加载 Facelets 页面”的含义。我假设您的意思是在页面呈现之前。
预渲染视图事件
对于 JSF 2.x,最简单的方法是为PreRenderViewEvent
. 为此,您首先需要f:event
在页面中添加一个标签,如下所示:
<f:event type="javax.faces.event.PreRenderViewEvent"
listener="#{bean.preRenderView}"/>
的监听器PreRenderViewEvent
必须在视图根 ( f:view
) 上注册。因此f:event
,f:view
如果您不使用f:view
. with 模板f:event
必须放在ui:define
保证相同的 a 中。
listener
在渲染视图之前调用属性中引用的侦听器方法。该方法可能如下所示:
public void preRenderView(ComponentSystemEvent ev) {
//Do something
}
@PreRenderView
如果您将 CDI 与 MyFaces CODI 一起使用,您可以简单地注释托管 bean 方法,@PreRenderView
它会在页面呈现之前被调用。
查看操作
使用 JSF 2.2(尚未最终版本),您可以使用视图操作在生命周期的不同阶段调用方法。有关详细信息,请参阅我关于 JSF 2.2 查看操作的 JSFlive 帖子。
您可以在我的GitHub 存储库中找到示例PreRenderViewEvent
并查看操作