2012-07-06 75 views
2

我将一条消息从servlet过滤器返回到Facelets页面。为了将消息从servlet过滤器传输到Facelets页面,我使用了一个会话变量。消息显示后,我想删除会话变量。这可以如何实现? 另外还有一种将数据从servlet传递给Facelets的替代方法?打开Facelets页面时删除会话属性页面

回答

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"); 
    } 
} 
+0

感谢BaluC ..这个工作对我来说罚款 – 2012-07-09 07:52:59