【发布时间】:2015-07-24 13:59:53
【问题描述】:
在我的应用程序中,区域设置由用户从登录页面动态选择,我将选定的区域设置保存在 Cookie 中。
如果我的 Web 应用程序发生重定向,我将面临与 I18n 相关的问题。
当我通过附加当前语言环境通过 URL 重定向页面时,我的应用程序语言保持与所选语言相同(即在这种情况下工作正常),但是当我通过 struts.xml 文件中定义的 struts 重定向重定向到下一页时,语言环境更改为默认值(在我的情况下为英语)。
例如:
在 - <result name="success" type="redirect"> 的情况下,区域设置更改为默认设置。
如果我删除type=redirect,那么它可以正常工作,但我的表单将被提交两次。
那么有没有办法在运行时将语言环境附加到 struts 重定向?
这是我的拦截器堆栈之一:
<interceptor-stack name="sessionValidateStack">
<interceptor-ref name="auditTrail"></interceptor-ref>
<interceptor-ref name="sessionCheck"></interceptor-ref>
<interceptor-ref name="service">
<param name="code">DG</param>
<param name="interfaceType">WEB</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="expHandler"></interceptor-ref>
</interceptor-stack>
【问题讨论】:
-
你在使用修改过的拦截器栈吗?您是否尝试过
redirectAction结果类型? -
是的!我正在使用修改过的拦截器堆栈,但我没有使用 redirectAction 结果类型。
-
显示拦截器堆栈。也可以尝试使用
redirectAction结果类型,因为您应该使用它而不是redirect来重定向到某些操作。 -
我已经在问题中添加了堆栈。我也会尝试使用 type="redirectAction"
-
默认情况下,S2 i18n 拦截器将语言环境存储在会话中,并且由于您有一些
sessionCheck拦截器,因此您可能正在使用您的代码将其从会话中删除。
标签: java jsp struts2 internationalization locale