Struts2 struts 2和sitemesh本地化
我正在使用struts 2和sitemesh。我可以通过设置一个名为“request\u locale”的请求参数,毫无问题地更改登录页面中的语言环境。但在所有其他页面中,我使用sitemesh装饰页眉和页脚。我尝试为其他页面设置相同的参数,但没有成功。以下是我在登录操作中尝试的一些其他代码:Struts2 struts 2和sitemesh本地化,struts2,localization,sitemesh,Struts2,Localization,Sitemesh,我正在使用struts 2和sitemesh。我可以通过设置一个名为“request\u locale”的请求参数,毫无问题地更改登录页面中的语言环境。但在所有其他页面中,我使用sitemesh装饰页眉和页脚。我尝试为其他页面设置相同的参数,但没有成功。以下是我在登录操作中尝试的一些其他代码: request.getSession(false).setAttribute("WW_TRANS_I18N_LOCALE", newLocale); ActionContext.getContext().
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}"/>
它总是显示浏览器接受这种语言,而不进行任何本地化。
如何进行本地化以使用sitemesh?我尝试使用请求区域设置参数将登录操作重定向到名为home的操作,然后此操作重定向到index.jsp。现在一切都好了。 我将默认操作设置为home操作,所以当用户从地址栏进入根页面时,它将激活home操作,这样i18n拦截器和Interactor将处于活动状态。 这是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>
所以一切都正常,您只是不知道如何在JSP中显示当前区域设置?不,在登录后,我重定向到index.JSP页面。但页面是用浏览器的默认语言呈现的。如果是因为重定向到页面,我现在正在搜索。我将尝试重新导向行动。
<package name="default" extends="struts-default" namespace="">
<default-action-ref name="home" />
<action name="home">
<result>/index.jsp</result>
</action>
</package>