UrlRewriteFilter在Struts 2中跳过i18n拦截器

时间:2014-04-22 10:11:18

标签: struts2 internationalization tuckey-urlrewrite-filter

我设法让struts 2 i18n Interceptor工作来改变会话语言环境。如果我直接调用Action,它会起作用,例如:

https://localhost:8443/loadClientLogin.action?request_locale=fr

但是如果我使用UrlRewriteFilter从规则映射,它会调用该操作,但似乎跳过了18n拦截器,因为语言环境没有改变。

这是我为此操作编写的网址重写器规则:

<rule>
    <from>^/client/login(\??)(.*)$</from>
    <to type="forward">/loadClientLogin.action$1$2</to>
</rule>

这是我用来更改语言环境的网址:

https://localhost:8443/client/login?request_locale=fr

另一方面,如果我将规则的类型更改为“重定向”,则可以正常工作,但浏览器地址会显示“丑陋”的转发网址。

奇怪的是我用来管理用户会话的其他自定义拦截器总是被调用。

更新

我在我的Action中添加了一个日志跟踪,用于编写会话中的语言环境:

public String loadClientLogin() {
    logger.debug("locale: " + ActionContext.getContext().getLocale());
    return Action.SUCCESS;
}

当我直接调用Action时,日志会显示正确的区域设置代码:

locale: fr

但通过网址重写器,我得到了这个:

locale: [ljava.lang.string;@4d227ffb

任何建议都将非常感谢。

0 个答案:

没有答案