Java 如果用户单击websphere portal上IE或mozilla中的新选项卡,如何启动新会话?

Java 如果用户单击websphere portal上IE或mozilla中的新选项卡,如何启动新会话?,java,portlet,websphere-portal,Java,Portlet,Websphere Portal,我在WebSpherePortal服务器上运行的一个应用程序的主页上有一个“用户搜索”portlet,它根据搜索表单中填写的搜索条件显示匹配的用户记录。我需要在结果页面上有一个“返回搜索输入”链接,点击该链接后,输入jsp上将显示已填写的表单 我面临的问题是,如果我在同一IE浏览器的两个不同选项卡中打开应用程序,并开始给出一些搜索条件和提交,同时从另一个IE选项卡(在同一浏览器中)搜索其他输入,然后返回到上一个选项卡并单击“返回搜索输入”链接,它将显示我在下一个IE选项卡中输入的输入,而不是显示

我在WebSpherePortal服务器上运行的一个应用程序的主页上有一个“用户搜索”portlet,它根据搜索表单中填写的搜索条件显示匹配的用户记录。我需要在结果页面上有一个“返回搜索输入”链接,点击该链接后,输入jsp上将显示已填写的表单

我面临的问题是,如果我在同一IE浏览器的两个不同选项卡中打开应用程序,并开始给出一些搜索条件和提交,同时从另一个IE选项卡(在同一浏览器中)搜索其他输入,然后返回到上一个选项卡并单击“返回搜索输入”链接,它将显示我在下一个IE选项卡中输入的输入,而不是显示第一个输入

我正在通过portlet会话设置和获取bean(表单bean)。但是在同一IE的两个diff选项卡中,它将是相同的用户会话(并且可能是相同的portlet会话)

我如何修复它,使两个选项卡独立保存搜索结果



这里需要注意的一点是,我可以访问这个“用户搜索”应用程序,而无需登录。因此,在这种情况下,它必须使用默认的portlet会话。登录并搜索后会发生什么;它会覆盖portlet会话和http会话吗?

基本上,您的问题源于这样一个事实,即您的会话在两个选项卡中都是相同的,因此您存储的任何数据在选项卡之间都不会有所不同,除非您将其存储为这样。我会为每个搜索分配一个id,并将它们存储在会话中的集合中。然后,当您绘制“返回搜索输入”按钮时,添加搜索id,以便您可以在构建输入页面时拉出正确的搜索


或者,您可以通过将搜索作为查询字符串发布到“返回搜索”链接上,而不是将其存储在会话中,从而节省服务器内存。

基本上,您的问题源于两个选项卡中的会话相同,因此您存储的任何数据在选项卡之间都不会有所不同,除非您将其存储为会话。我会为每个搜索分配一个id,并将它们存储在会话中的集合中。然后,当您绘制“返回搜索输入”按钮时,添加搜索id,以便您可以在构建输入页面时拉出正确的搜索


或者,您可以通过将搜索作为查询字符串发布在返回搜索链接上而不是存储在会话中来节省服务器内存。

您所描述的是web应用程序面临的一个相当常见的问题——我认为官方术语是——即需要在会话之间支持某些内容范围和请求范围

有些web框架支持此概念,有些则不支持。portlet规范不支持开箱即用(不过,可能websphere中有一些特定的东西)

我认为重新创建对话支持的一种方法是将对话id存储在生成的HTML中。这样,您可以拥有每个选项卡/窗口的ID。如果一个请求突然收到一个旧ID,您知道它来自一个旧页面(如果用户使用了后退按钮)或另一个选项卡


那只是一张草图。我很确定网上有很多关于这个问题的资料,否则会产生另一个问题。

您所描述的是web应用程序面临的一个相当常见的问题——我认为官方术语是——即需要在会话范围和请求范围之间提供支持

有些web框架支持此概念,有些则不支持。portlet规范不支持开箱即用(不过,可能websphere中有一些特定的东西)

我认为重新创建对话支持的一种方法是将对话id存储在生成的HTML中。这样,您可以拥有每个选项卡/窗口的ID。如果一个请求突然收到一个旧ID,您知道它来自一个旧页面(如果用户使用了后退按钮)或另一个选项卡


那只是一张草图。我很确定网上有很多关于这个问题的资源,否则会产生另一个问题。

您好,谢谢您提供的信息。您能解释一下如何将搜索id添加到“返回搜索输入”中吗链接以及如何在我的表单jsp上识别搜索id。如果你能提供任何示例,那对我来说都是非常好的。@ha22109乔纳森是正确的。WebSphere Portal不支持多个同时登录。您的浏览器共享相同的会话,因此它们会导致问题,并且产品不支持您尝试完成的操作。您好,谢谢您提供的信息。请您进一步解释如何将搜索id添加到“返回搜索输入”中链接以及如何在我的表单jsp上识别搜索id。如果你能提供任何示例,那对我来说都是非常好的。@ha22109乔纳森是正确的。WebSphere Portal不支持多个同时登录。您的浏览器共享相同的会话,因此它们会导致问题,并且产品不支持您尝试完成的任务。