【问题标题】:struts 2 and sitemesh localizationstruts 2 和 sitemesh 本地化
【发布时间】:2013-07-13 08:26:30
【问题描述】:

我正在使用 struts 2 和 sitemesh。只需设置一个名为“request_locale”参数的请求参数,我就可以毫无问题地更改登录页面中的语言环境。但在所有其他页面中,我使用 sitemesh 来装饰页眉和页脚。我试图为其他页面设置相同的参数,但没有运气。这些是我在登录操作中尝试过的其他一些代码:

request.getSession(false).setAttribute("WW_TRANS_I18N_LOCALE", newLocale);
ActionContext.getContext().setLocale(newLocale);
session.put(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE, newLocale);

当我写出这些设置时,我发现一切正常。 但是当我写出来的时候

<c:out value="${pageContext.request.locale.language}"/>

它总是显示浏览器 Accept-Language 并且它没有进行任何本地化。 如何进行本地化以使用 sitemesh?

【问题讨论】:

  • 所以一切正常,您只是不知道如何在 JSP 中显示当前语言环境?
  • 登录后不重定向到 index.jsp 页面。但是页面是使用浏览器的默认语言呈现的。我现在正在搜索是否是因为重定向到页面。我会尝试重定向到行动。

标签: struts2 localization sitemesh


【解决方案1】:

我尝试从登录操作重定向到带有请求区域设置参数的名为 home 的操作,然后此操作重定向到 index.jsp。现在一切正常。 我将默认操作设置为主页操作,因此当用户从地址栏进入根页面时,它正在激活主页操作,因此 i18n 拦截器和拦截器正在变得活跃。 这是struts.xml中的login.action:

<action name="login" class="wateron.login.LoginAction" >
        <result type="redirectAction">
            <param name="actionName">home?request_locale=${request_locale}</param>
            <param name="namespace">/</param>
        </result> 
</action>

这是 struts.xml 中的 home 操作:

<package name="default" extends="struts-default" namespace="">
    <default-action-ref name="home" />
    <action name="home">
        <result>/index.jsp</result>     
    </action>
</package>

感谢参考问题: How to use interceptor on the default page?

【讨论】:

    猜你喜欢
    • 2013-06-20
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2011-09-01
    • 2011-07-29
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    相关资源
    最近更新 更多