在导航到新portlet之前清除JSF会话

时间:2011-10-19 18:14:45

标签: jsf portlet

在我们的应用程序中,我们为每个用户选项卡定义了一个portlet。

  • 我们正在使用JSF 1.2 + Portlets。
  • 我希望在用户时清除FacesContext会话托管bean 从一个标签导航到另一个标签。

实现这一目标的最佳方法是什么?

  • 我们可以编写任何portlet卸载功能吗? 用户离开之前删除会话被管Bean的代码 标签(门户)。

1 个答案:

答案 0 :(得分:1)

当您使用JSF 1.2并因此无法利用专为此目的而设计的新视图范围时,最好的办法是抓住MyFaces TomahawkMyFaces Orchestra。您只需要将“视图”范围的bean从会话范围放回到请求范围中。

如果您想模拟新的JSF 2.0视图范围,即只要您与同一视图交互,bean就会存在,那么您需要将Tomahawk的<t:saveState>添加到引用请求的视图中scoped bean。

<h:form>
    <h:inputText value="#{bean.input}" />
    <h:commandButton value="Submit" action="#{bean.submit}" />
    <t:saveState value="#{bean}" />
</h:form>

如果您想模拟新的CDI会话范围(可以在同一浏览器选项卡中跨越多个视图),那么您需要集成Orchestra。