7

春の国際化を機能させようとしています。classpath:messages basenameを使用し、言語用の.propertiesファイルを作成しました。それらはweb-infフォルダーに正しくコピーされており、コードはプロパティファイル内に存在します...

これがすべてを示すideです。助けてください。私が行った別のプロジェクトからセットアップをコピーしましたが、これは正常に機能します。さまざまなメッセージファイルを作成しようとしましたが、何も取得されませんでした... picは、web.xml、spring-servlet.xml、およびディレクトリ構造を示しています。

これはすべてを示しています、私は私が欠けているものを見ることができません

編集 Spring-servletの代わりにBean定義をapplicationContextに追加すると、機能します..?

4

4 に答える 4

12

私は試してみます:

ファイルがWEB-INF/classesディレクトリの下にある場合は、次のことを試してください。

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="WEB-INF/classes/messages" />
</bean>

また、ファイルの名前は次のいずれかである必要があります。

  • messages.properties
  • messages_en.properties
  • messages_en_GB.properties

編集-最後の試み!

構成を書くこの方法についてはどうですか、私はあなたの最後のコメントの後にここでsthgのにおいがします:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:messages" />
    <property name="defaultEncoding" value="UTF-8" />
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <property name="defaultLocale" value="en" />
</bean>

<mvc:interceptors>
    <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="lang" />
    </bean>
</mvc:interceptors>
于 2012-06-20T11:16:05.620 に答える
3

メッセージプロパティファイルをクラスパス(WEB-INF / classes)の外に置き、Beanを次のように定義します

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/messages"/>
<property name="cacheSeconds" value="1"/>

ドキュメントReloadableResourceBundleMessageSourceによると、スプリングがcachSecondsを介してフェッチするメッセージをオンザフライで変更できるという利点があります。このクラスは、リソースの場所を指定する点でのみResourceBundleMessageSourceと異なります。

于 2012-06-20T12:05:38.373 に答える
0

すべての構成の詳細はすべて正しいですが、子構成ファイルで構成されているプロパティファイルを1つ実行します。これは、spring-servlet.xmlがすべてのプロパティをapplicationContext.xmlに構成することを意味し、親構成ファイルが最大で機能することを意味します。試してみて、spring-servlet.xml..........のプロパティの詳細の構成を削除してください。

于 2015-01-12T14:02:52.880 に答える
-1

多くの人にとってこれはばかげているように聞こえますが、私のコードが私たち自身のMessageSourceを書いたという間違いがありました。これはSpringのMessageSourceを呼び出していました。

しかし、コードでは(MessageSource(MessageSource))のようでした。したがって、私たちはルックアップオーバールックアップを行っていました。

余分な呼び出しを削除し、現在は機能しています。

于 2015-04-21T15:43:17.907 に答える