私は、URIからロケール(リクエストパラメータではなくURI自体)を取得するカスタムActionMapperを実装しました。 ActionMapper.getMapping()内から、現在のアクションのロケールを設定するにはどうすればよいですか?カスタムStruts 2 ActionMapperでロケールを設定する方法
は、ここで私が考えられてきたいくつかのアイデアです:。
- ActionContext.getCurrent()にsetLocale()。残念ながら、アクションが呼び出されたときに新しく新しいActionContextが作成され、ロケールがデフォルトにリセットされたようです。
- パラメータrequest_localeを設定します。このパラメータは、i18nインターセプタによって処理されます。残念ながら、i18nインターセプタは、現在のアクションだけでなく、現在のセッションでもロケールの設定を主張しています。これは、アプリケーションでセッションが有効になっていないため例外がスローされます。
- パラメータを設定し、setLocale()を実装してアクション自体で処理します。これはまっすぐですが、インターセプタのどれもがロケールにアクセスできないことを意味します。
- パラメータを設定してインターセプタを書き込みます(基本的には、セッションのサポートを前提としないでi18nインターセプタと同じことを行います)。このような単純な問題のために、車を再発明することは言うまでもありません。
これを達成する簡単な方法はありますか?
あなたのインターセプタ全体のロケールが必要な場合は、私はあなたがカスタムの国際化インターセプターとホイールを再発明し立ち往生していると思います。私は、ActionContextが再作成されたことに驚いています - 私はあなたの最初のアイデアもうまくいくと考えました。 – Pat