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