我有一个Struts 2 Web应用程序。目前,当用户单击注销URL时,我们调用一个注销操作,并在该方法中调用session.invalidate()。如果成功,则调用logout.jsp。在logout.jsp中,我们需要重定向到另一个链接。这个链接目前在JSP中是硬编码的。测试和生产中的链接不同,因此在测试和生产中部署时,我们必须对此链接进行更改。我们有从外部文件获取值的实用程序。但是,由于会话无效,我们无法在会话中设置值,也无法在JSP中检索。什么是最好的方法呢?
session.invalidate()
logout.jsp
62o28rlo1#
在启动时将值放入应用程序上下文中,并从同一位置检索它。没有理由在会话中放置任何不是每个用户的值。
rbl8hiat2#
如果需要会话来执行此操作,可以在会话失效之前配置结果。一旦配置了结果,您就可以对要重定向的操作或URL使用动态参数,您就不再需要JSP来执行重定向。重定向结果可以在不呈现JSP的情况下完成此任务。这个例子取自Redirecting to another action with unknown amount of parameters in Struts 2的答案。也可以保存查询字符串而不是参数Map。
String params = request.getQueryString();
字符串若要动态地将参数添加到redirectAction结果中,您应该在动态参数中使用OGNL。
redirectAction
<param name="actionName">${previousAction.name +'?'+ parameters}</param>
型假设你有一个参数的getter,并从你保存以前的查询字符串,动作名称和命名空间的会话中初始化它。
2条答案
按热度按时间62o28rlo1#
在启动时将值放入应用程序上下文中,并从同一位置检索它。
没有理由在会话中放置任何不是每个用户的值。
rbl8hiat2#
如果需要会话来执行此操作,可以在会话失效之前配置结果。
一旦配置了结果,您就可以对要重定向的操作或URL使用动态参数,您就不再需要JSP来执行重定向。
重定向结果可以在不呈现JSP的情况下完成此任务。
这个例子取自Redirecting to another action with unknown amount of parameters in Struts 2的答案。
也可以保存查询字符串而不是参数Map。
字符串
若要动态地将参数添加到
redirectAction
结果中,您应该在动态参数中使用OGNL。型
假设你有一个参数的getter,并从你保存以前的查询字符串,动作名称和命名空间的会话中初始化它。