在struts2 Web应用程序中的I18n重定向问题

时间:2015-05-13 10:27:16

标签: java jsp struts2 internationalization locale

在我的应用程序中,用户从登录页面动态选择Locale,我将在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>

2 个答案:

答案 0 :(得分:1)

在参数中添加request_locale=<your_language_key>

答案 1 :(得分:0)

在操作结果类型中使用redirect-action而不是redirect,因为在重定向操作的情况下,控件会跳转到不同的操作(在相同或其他包中)。

请参阅link了解重定向和重定向类型结果类型之间的区别。