0

私はStruts 2とsitemeshを使用しています。「request_locale」パラメータで名前を付けたリクエスト パラメータを設定するだけで、ログイン ページのロケールを問題なく変更できます。しかし、他のすべてのページでは、ヘッダーとフッターを装飾するためにサイトメッシュを使用しています。そして、他のページにも同じパラメータを設定しようとしましたが、うまくいきませんでした。これらは、ログインアクションで試した他のコードの一部です:

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 が表示され、ローカライズは行われません。サイトメッシュで動作するようにローカリゼーションを行うにはどうすればよいですか?

4

1 に答える 1

0

ログイン アクションからリクエスト ロケール パラメータを使用して 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 のホーム アクションです。

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

参照の質問をありがとう: デフォルト ページでインターセプターを使用するには?

于 2013-07-16T19:31:35.113 に答える