Bạn định sử dụng tài nguyên để làm gì? Trong ví dụ bạn không làm bất cứ điều gì với nó.
Từ tên của nó, tuy nhiên, có vẻ như bạn đang cố gắng tải các thông điệp quốc tế hóa/bản địa hóa - mà bạn có thể là MessageSource
.
Nếu bạn xác định một số đậu (có thể là trong một riêng biệt messages-context.xml
) tương tự như sau:
<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>
mùa xuân sẽ được tải bó tài nguyên của bạn khi bạn ứng dụng khởi động. Sau đó, bạn có thể autowire các MessageSource
vào bộ điều khiển của bạn và sử dụng nó để có được thông điệp bản địa hoá:
@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. thêm Locale
làm tham số cho phương thức điều khiển của bạn sẽ khiến cho Spring kết nối nó một cách kỳ diệu - đó là tất cả những gì bạn cần làm.
Bạn cũng có thể sau đó truy cập các tin nhắn trong gói tài nguyên của bạn trong JSP của bạn sử dụng:
<spring:message code="my.message.key" />
Đó là cách ưa thích của tôi để làm điều đó - chỉ có vẻ sạch hơn.
Tôi biết MessageSource. 'messages_en.properties' chỉ là ví dụ. Tôi đã thay đổi điều này để tránh những sai lầm. – marioosh
Ah, ok. Vâng, tôi đoán nó phụ thuộc vào những gì bạn sẽ sử dụng tập tin cho. Nếu nó là một thứ khá chuẩn như một tệp tin .properties hoặc L18n thì rất có thể sẽ có một cách cụ thể để thực hiện nó (như messageSource) nhưng nếu bạn đang sử dụng các tệp theo một cách riêng biệt nào đó, tôi không thấy vấn đề với những gì bạn đang làm. – Russell