我正在使用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一起使用?
答案 0 :(得分:0)
我尝试从登录操作重定向到带有请求区域设置参数的名为home的操作,然后此操作重定向到index.jsp。现在一切都好。 并且我将默认操作设置为主页操作,因此当用户从地址栏输入根页面时,它正在执行主页操作,因此i18n拦截器和intercoptors正在激活。 这是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中的主页操作:
<package name="default" extends="struts-default" namespace="">
<default-action-ref name="home" />
<action name="home">
<result>/index.jsp</result>
</action>
</package>