Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在导航到新portlet之前清除JSF会话_Jsf_Portlet - Fatal编程技术网

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

在导航到新portlet之前清除JSF会话,jsf,portlet,Jsf,Portlet,在我们的应用程序中,我们为每个用户选项卡定义了一个portlet 我们正在使用JSF1.2+portlet 我想在用户访问时清除FacesContext会话管理bean 从一个选项卡导航到另一个选项卡 实现这一目标的最佳方式是什么 是否有任何portlet卸载功能可供我们编写 在用户离开会话之前删除会话管理bean的代码 选项卡(portlet) 由于您使用的是JSF 1.2,因此无法利用专门为此目的设计的新视图范围,因此最好的选择是抓取或删除。您只需要将“视图”范围的bean从会话范围放

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

  • 我们正在使用JSF1.2+portlet
  • 我想在用户访问时清除FacesContext会话管理bean 从一个选项卡导航到另一个选项卡
实现这一目标的最佳方式是什么

  • 是否有任何portlet卸载功能可供我们编写 在用户离开会话之前删除会话管理bean的代码 选项卡(portlet)

由于您使用的是JSF 1.2,因此无法利用专门为此目的设计的新视图范围,因此最好的选择是抓取或删除。您只需要将“视图”范围的bean从会话范围放回请求范围

如果您想模拟新的JSF2.0视图范围,即只要您与同一个视图交互,bean就会存在,那么您需要将Tomahawk添加到引用请求范围bean的视图中

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


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

您确定您的托管bean需要@SessionScope吗?在您的场景中,视图或对话范围似乎更适合。我们使用的是JSF1.2,所以我不能使用视图范围,因为您可以使用CDI吗?如果是,则它具有对话范围。