我有一个 Struts 2 Web 应用程序。
目前,当用户单击注销 URL 时,我们会调用注销操作,并在方法中调用
session.invalidate()
。如果成功,我们就会打电话给 logout.jsp
。
在
logout.jsp
中我们需要重定向到另一个链接。此链接当前在 JSP 中硬编码。
测试和生产中的链接是不同的,因此我们在测试和生产中部署时必须对此链接进行更改。我们有从外部文件获取值的实用程序。但由于会话已失效,我们无法在会话中设置值并在 JSP 中检索。
最好的方法是什么?
在启动时将值放入应用程序上下文中,并从同一位置检索它。
没有理由在会话中放置任何不是每个用户值的东西。
如果您需要会话来执行此操作,您可以在会话失效之前配置结果。
配置结果后,您可以对要重定向的操作或 URL 使用动态参数,不再需要 JSP 来执行重定向。
重定向结果无需渲染 JSP 即可做到这一点。
该示例取自对 Redirecting to another action withknown amount ofparameters in Struts 2的答案。
您还可以保存查询字符串而不是参数映射。
String params = request.getQueryString();
要将参数动态添加到
结果,您应该在动态参数中使用 OGNL。redirectAction
<param name="actionName">${previousAction.name +'?'+ parameters}</param>
假设您有一个参数的 getter,并从保存先前查询字符串、操作名称和命名空间的会话中初始化它。