Bal*_*usC 40
您需要实现PhaseListener的接口和挂钩beforePhase()的PhaseId_RENDER_RESPONSE.渲染响应是JSF生命周期的最后阶段.
public class MyPhaseListener implements PhaseListener {
@Override
public PhaseId getPhaseId() {
return PhaseId.RENDER_RESPONSE;
}
@Override
public void beforePhase(PhaseEvent event) {
// Do your job here which should run right before the RENDER_RESPONSE.
}
@Override
public void afterPhase(PhaseEvent event) {
// Do your job here which should run right after the RENDER_RESPONSE.
}
}
Run Code Online (Sandbox Code Playgroud)
要使其运行,请按以下方式注册faces-config.xml:
<lifecycle>
<phase-listener>com.example.MyPhaseListener</phase-listener>
</lifecycle>
Run Code Online (Sandbox Code Playgroud)
更新上面的阶段监听器确实适用于整个范围.要为特定视图设置阶段侦听器,请使用beforePhase和/或afterPhase属性<f:view>.
例如
<f:view beforePhase="#{bean.beforePhase}">
...
</f:view>
Run Code Online (Sandbox Code Playgroud)
同
public void beforePhase(PhaseEvent event) {
if (event.getPhaseId() == PhaseId.RENDER_RESPONSE) {
// Do here your job which should run right before the RENDER_RESPONSE.
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,更多的JSF 2.0方法使用<f:event type="preRenderView">:
<f:event type="preRenderView" listener="#{bean.preRenderView}" />
Run Code Online (Sandbox Code Playgroud)
同
public void preRenderView() {
// Do here your job which should run right before the RENDER_RESPONSE.
}
Run Code Online (Sandbox Code Playgroud)
在jsf 2你可以<f:phaseListener type="my.MyPhaseListener">用来挂钩MyPhaseListener一些facelet.MyPhaseListener应该实现PhaseListener和覆盖
afterPhase - 在阶段结束后运行代码 beforePhase - 在阶段开始之前运行代码 getPhaseId- PhaseId枚举指定要为其调用侦听器的阶段名称(PhaseId.RENDER_RESPONSE作为生命周期的最后阶段)| 归档时间: |
|
| 查看次数: |
61421 次 |
| 最近记录: |