Struts2 URLEwriteFilter跳过Struts 2中的i18n拦截器

Struts2 URLEwriteFilter跳过Struts 2中的i18n拦截器,struts2,internationalization,tuckey-urlrewrite-filter,Struts2,Internationalization,Tuckey Urlrewrite Filter,我设法让Struts2i18n拦截器工作以更改会话区域设置。如果我直接调用该操作,则会起作用,例如: https://localhost:8443/loadClientLogin.action?request_locale=fr 但如果我使用URLRewiteFilter从规则映射,它会调用该操作,但似乎跳过了18n拦截器,因为区域设置没有更改 这是我为此操作编写的url重写器规则: <rule> <from>^/client/login(\??)(.*)$&l

我设法让Struts2i18n拦截器工作以更改会话区域设置。如果我直接调用该操作,则会起作用,例如:

https://localhost:8443/loadClientLogin.action?request_locale=fr
但如果我使用URLRewiteFilter从规则映射,它会调用该操作,但似乎跳过了18n拦截器,因为区域设置没有更改

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

<rule>
    <from>^/client/login(\??)(.*)$</from>
    <to type="forward">/loadClientLogin.action$1$2</to>
</rule>
另一方面,如果我将规则的类型更改为“重定向”,它会工作,但浏览器地址会显示“丑陋”的转发url

奇怪的是,我用来管理用户会话的另一个自定义拦截器总是被调用

更新:

我在操作中放置了一个日志跟踪,用于从会话写入区域设置:

public String loadClientLogin() {
    logger.debug("locale: " + ActionContext.getContext().getLocale());
    return Action.SUCCESS;
}
当我直接调用该操作时,日志会显示正确的区域设置代码:

locale: fr
但通过url重写器,我得到了以下信息:

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

任何建议都将不胜感激。

删除此筛选器,您可以直接映射您的操作。@RomanC是的,我知道。在这个特定的示例中,它可能是有意义的,但出于SEO原因(例如,为了将id参数映射到url路径),我需要在应用程序的其他部分使用它。但是,可能您不知道如何在高级中使用通配符映射。我对Struts 2非常陌生。我来看看。非常感谢。
locale: [ljava.lang.string;@4d227ffb