0

次の問題について助けが必要です。フレームワークをまったく使用しない (サーブレットのみ) 既存の Web アプリケーションがあり、新しい機能を追加する必要がありますが、新しいサーブレットを に追加する代わりに、web.xmlStruts 1 と Spring を追加します。

プロジェクトはすでに存在するため、Struts を構成して、既に適用されている規則に対応できるようにする必要があります。その一つがローカリゼーションです。

.property ファイルを使用する代わりに、すべてのローカライズ可能なテキストがデータベースから取得されるため、独自のMessageResourcesFactoryおよびMessageResourcesクラスを実装しました。問題は、このアプリケーションでは、Struts がデフォルトで使用するロケール属性「org.apache.struts.action.LOCALE」からではなく、 「LANGUAGE」と呼ばれる整数セッション属性からユーザー言語を取得することです。

質問はこれです。標準の Locale 属性ではなく、カスタムの Integer 属性からユーザー言語をフェッチするように Struts に指示するにはどうすればよいですか?

ありがとう。

4

3 に答える 3

1

私の知る限り、ロケールを使用するために別のセッション属性を使用するように Struts に指示する直接的な方法はありません。LocaleStruts でこれができるとしても、カスタム整数と「実際の」オブジェクトとの間のマッピングを実装する必要があります。

私の提案:

  • LANGUAGE属性を対応する Struts ロケール属性にjavax.servlet.http.HttpSessionAttributeListener同期する独自の実装
  • または、 LANGUAGE属性を設定するコードを変更して、Struts セッション属性も設定します。
于 2013-12-20T16:04:43.783 に答える
0

解決策は、 メソッドとActionServletオーバーライド メソッドを拡張し、ロケールを の前にリクエストに入れることで変更します。お気に入りdoGetdoPostprocess()

String locale = "your_locale";
request.getSession().setAttribute(Globals.LOCALE_KEY, new Locale(locale));  
于 2013-12-20T16:34:51.950 に答える