打开Facelets页面时删除会话属性

时间:2012-07-06 09:38:58

标签: jsf-2 session-variables servlet-filters

我正在从servlet过滤器向Facelets页面返回一条消息。要将消息从servlet过滤器传输到Facelets页面,我使用的是会话变量。显示消息后,我想删除会话变量。如何实现这一目标? 还有另一种方法将数据从servlet传递给Facelets吗?

1 个答案:

答案 0 :(得分:5)

RENDER_RESPONSE的后期删除它。您可以使用<f:view afterPhase>

<f:view afterPhase="#{bean.removeSessionAttributeAfterRender}">

public void removeSessionAttributeAfterRender(PhaseEvent event) {
    if (event.getPhaseId() == PhaseId.RENDER_RESPONSE) {
        FacesContext.getCurrentInstance().getExternalContext()
            .getSessionMap().remove("sessionAttributeName");
    }
}