2011-06-30 4 views
0

私はSpringフレームワークを初めて使い、多言語でなければならないWebアプリケーションで作業しています。アプリケーションの開始時にいくつかのSpring属性を追加する方法

tanslated値はデータベースにあり、ビューをレンダリングしてデータベースから値を取得するたびにその値を必要としません。

アイデアは、アプリケーションからどこかに取得することです。したがって、アプリケーションが起動するときにこの値をロードしたいのですが、どこに配置するのか正確に、どこに配置するのかわかりません。

ありがとうございました!

答えて

0

解決策が見つかりました。

public class DictionaryAccessor implements ServletContextAware, InitializingBean{ 

    @Resource 
    private DictionaryServices dictionaryServices; 

    protected ServletContext context; 
    @Override 
    public void setServletContext(ServletContext servletContext) { 
     context = servletContext; 
    } 

    @Override 
    public void afterPropertiesSet() throws Exception { 
     logger.debug("initializing dictionary"); 
     loadDictionary(); 
     logger.debug("done with dictionary"); 
    } 

私のアプリケーションの起動時にDictionaryAccessorがロードされます:私はこのような春のBeanを作成しました。メソッドloadDictionaryでは、私の値を属性として属性ServletContextに入れました。

私のjspでは、自分のタグを作成して翻訳にアクセスしたり、.zulファイルにアクセスしたりして、自分の関数からアクセスしました。

1

この問題の通常の方法は、メッセージの.propertiesファイル(言語ごとに1つ)を使用して、フレームワークが使用するブラウザのロケールを使用するかどうかを決定するか、直接指定することです。

Spring MVCのロケールサポートについてはhereherehereの2つの異なる例を参照してください。

あなたのi18nデータ用にデータベースを使用することを強くお勧めする場合は、もちろん可能ですが、私の知る限り、これに対する組み込みのサポートはありません。しかし、アイデアについてはthisスレッドを参照してください。

関連する問題