1

Rythm はシングルトンとして使用することも、通常のオブジェクトとしてインスタンス化することもできます。Init()現在、サーブレットメソッドの webapp で一度インスタンス化しています。(一度しか作成していないので、これはシングルトンを使用するのとほぼ同じです)

ここで、i18n サポートをサイトに追加する必要があり、レンダリングする前に言語を動的に設定する必要があります。

私はこれを行うことができます:

engine.setLocale(userLocale);
engine.render(template,arguments);

シングルトン (またはサーブレットで作成された単一のインスタンス) を使用すると、2 つのステートメント間で競合状態が発生する可能性があると思います。

  1. これは正しいですか、競合状態はありませんか?
  2. リクエストごとに Rythm インスタンスを作成する必要がありますか?
  3. エンジンの状態を変更せずに、レンダリングごとに言語を変更する別の方法はありますか?
4

1 に答える 1

2

最初に最新バージョンの rythm ではengine.prepare(Locale)、 ではなくを呼び出す必要がありengine.setLocale(Locale)ます。

あなたの質問に答えるために:

  1. これは正しいですか、競合状態はありませんか?

ThreadLocalコード内でレンダリング設定を保存するために使用するため、競合状態は発生しません。

  1. リクエストごとに Rythm インスタンスを作成する必要がありますか?

間違いなくNO

  1. エンジンの状態を変更せずに、レンダリングごとに言語を変更する別の方法はありますか?

言語とロケールはエンジンレベルの状態ではなく、リクエストごとの状態です。ただし、デフォルトの言語とロケールはエンジン レベルで設定できます

于 2016-06-04T00:02:41.843 に答える