あなたはこのリソースをどのように使用しますか?あなたの例では、何もしません。
ただし、国際化/ローカリゼーションメッセージを読み込もうとしているようです(MessageSource
)。あなたはこれに似た(おそらく別のmessages-context.xml
で)いくつかの豆を定義する場合
:
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>WEB-INF/messages/messages</value>
</list>
</property>
</bean>
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="en_GB" />
</bean>
春は、あなたのリソースバンドルあなたのアプリケーションが起動をロードします。次に、あなたのコントローラにMessageSource
をautowireし、ローカライズされたメッセージを得るためにそれを使用することができます:
@Controller
public class SomeController {
@Autowired
private MessageSource messageSource;
@RequestMapping("/texts")
public ModelAndView texts(Locale locale) {
String localisedMessage = messageSource.getMessage("my.message.key", new Object[]{}, locale)
/* do something with localised message here */
return new ModelAndView("texts");
}
}
NB。コントローラーメソッドにパラメータとしてLocale
を追加すると、魔法のようにSpringがそれを配線します - これだけです。
ます。また、その後、使用してJSPであなたのリソースバンドルのメッセージにアクセスすることができます。
それを行うには、私の好ましい方法である
<spring:message code="my.message.key" />
- ちょうどクリーナーようだが。あなたのBean定義で
@Controller
public class SomeController {
private Resource resource;
public void setResource(Resource resource) {
this.resource = resource;
}
@RequestMapping("/texts")
public ModelAndView texts() {
InputStream in = resource.getInputStream();
// ...
in.close();
}
}
:
<bean id="..." class="x.y.SomeController">
<property name="resource" value="/WEB-INF/file.txt"/>
</bean>
これは/WEB-INF/file.txt
パスを使用してServletContextResource
を作成し、あなたのコントローラにそれを注入します。このような
私はMessageSourceを知っています。 'messages_en.properties'はほんの一例です。私は間違いを避けるためにこれを変更しました。 – marioosh
ああ、大丈夫です。まあ、それはあなたがファイルを使用しようとしているものに依存していると思います。 .propertiesファイルやL18nメッセージのような標準的なものであれば、(messageSourceのように)それを行うための具体的な方法はほとんどありませんが、いくつかの特注のファイルを使用している場合は、あなたがやっていることの問題。 – Russell