JSF强制URL重写

JSF强制URL重写,jsf,url-rewriting,tabs,Jsf,Url Rewriting,Tabs,我使用JSF,我希望避免同一个会话在我的浏览器中共享两个选项卡。我认为一个简单的方法是强制url重写,而不是使用cookies 谁能告诉我如何使用JSF强制重写url 谢谢 圣菲 我希望避免同一会话在浏览器中共享两个选项卡 对不起,这没有道理。这不是您可以从服务器端控制的。所有浏览器在所有打开的选项卡/窗口中使用相同的会话(除了像Chrome Ingonito这样的匿名选项卡/窗口,通过Ctrl+Shift+N)。这就是所有浏览器的工作方式,完全不受您的控制 如果您遇到问题,那么您应该完全以不同

我使用JSF,我希望避免同一个会话在我的浏览器中共享两个选项卡。我认为一个简单的方法是强制url重写,而不是使用cookies

谁能告诉我如何使用JSF强制重写url

谢谢

圣菲

我希望避免同一会话在浏览器中共享两个选项卡

对不起,这没有道理。这不是您可以从服务器端控制的。所有浏览器在所有打开的选项卡/窗口中使用相同的会话(除了像Chrome Ingonito这样的匿名选项卡/窗口,通过Ctrl+Shift+N)。这就是所有浏览器的工作方式,完全不受您的控制

如果您遇到问题,那么您应该完全以不同的方式解决它,而不是尝试在多个浏览器选项卡/窗口中禁用会话共享(这根本不可能)。这听起来很像在会话范围的bean中错误地存储了请求或视图范围的数据。你不应该那样做。您应该将请求范围的数据存储在请求范围的bean中,并将视图范围的数据存储在视图范围的bean中。会话范围应仅用于会话范围的数据,如登录用户及其首选项(如语言设置)

我认为视图范围实际上就是您要寻找的;只要您通过回发与非常相同的视图(阅读:非常相同的浏览器窗口/选项卡)交互,并且它不会在其他浏览器窗口/选项卡中共享,它就会一直存在

另见:

谢谢您的回答。事实上,我的应用程序是一个向导。。。在多次查看之后,我将用户数据存储到会话范围中的最终提交(会话范围在我的配置中不可用)。我不希望两个不同的选项卡(带有两个不同的向导)相互混合。如果不使用会话范围的bean,我该怎么办呢?使用具有条件呈现内容的单个视图。另请参见,例如:是的,对于一个简单的向导来说,这确实是一个好主意。。但我的比较复杂。使用多个分支等…然后使用CDI的
@ConversationScoped
或CODI的
@ViewAccessScoped
。至少,您的具体问题可以归结为,您只是使用了错误的作用域,正如回答的那样。它确实是我最初选择的作用域,但转换作用域不可用(正如我在第一次回答中所说的)。但你是对的:具体问题是我使用会话范围而不是会话范围。