리소스를 어떻게 사용 하시겠습니까? 당신의 예에서 당신은 아무것도하지 않습니다.
그러나 국제화/현지화 메시지를로드하려고 시도하는 것처럼 보입니다.이 메시지는 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" />
- 단지 청소기 것입니다. 이 같은
내가 MessageSource를 알고있다. 'messages_en.properties'는 단지 예일뿐입니다. 실수를 피하기 위해 이것을 변경했습니다. – marioosh
아, 좋아. 글쎄, 당신이 그 파일을 사용하는 것에 달려 있다고 생각합니다. .properties 파일이나 L18n 메시지와 같이 상당히 표준적인 것이라면 (messageSource와 같은) 좀 더 깔끔한 방법 일 가능성이 높습니다. 그러나 파일을 일부 맞춤식으로 사용하는 경우 특정 방식으로 볼 수 없습니다. 당신이하고있는 것에 대한 문제. – Russell