2013-02-25 27 views
5

Đây là tuyên bố messageResource tôimùa xuân khuôn khổ: Không có thông báo tìm thấy dưới mã cho locale

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> 

    <!-- Auto-detect controllers in this package --> 
    <context:component-scan base-package="levelup.world.web" /> 

    <!-- Prepend /WEB-INF/jsp/ and append .jsp to the view name --> 
    <bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 

    <!-- Access resource bundles with the specified basename --> 
    <bean id="messageSource" 
     class="org.springframework.context.support.ReloadableResourceBundleMessageSource" 
     p:basename="/WEB-INF/messages/" /> 

</beans> 

Khi tôi chạy ứng dụng của tôi, lỗi này xuất hiện

No message found under code 'country.plural' for locale 'fil_PH' 

hiện đang nằm trong thông điệp của tôi thư mục bên trong web- inf, Tôi có các thuộc tính thông báo sau

messages_en.properties 
messages_fr.properties 
messages.properties 

Tôi thiếu gì ở đây?

+0

Đầu tiên tất cả các tin nhắn của bạn ở đây? fil_PH có thể là một tệp thuộc tính khác cho thư mục thư của bạn. – erhun

Trả lời

17

Nói chung vấn đề như vậy xuất hiện không phải vì ngôn ngữ không tồn tại, nhưng vì MessageBundle được định cấu hình không đúng cách. Trong trường hợp của bạn, bạn dường như cần phải loại bỏ "/" trong tên của bạn.

<bean id="messageSource" 
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource" 
    p:basename="/WEB-INF/messages" /> 

Tại sao nó là như vậy:

Nếu bạn có messages.propertiesmessages_en.properties bó, sau đó bó tên là messages. Nếu bạn có chúng trong thư mục WEB-INF, thì tên cơ sở là /WEB-INF/messages, tức là theo/path/to/bundle/bundlename. Nếu bạn có messages.properties trong thư mục /WEB-INF/messages thì tên cơ sở tương ứng là /WEB-INF/messages/messages.

+0

tại sao tôi cần xóa '/'? – user962206

+0

Bạn cần xóa "/" vì khi bạn chỉ định tên cơ sở, bạn nên sử dụng cấu trúc như vậy: '/ path/to/bundle/bundlename'. Và bạn có thể vui lòng nói liệu nó có giúp được không? – n1ckolas

+0

Tôi nghĩ rằng đó là thư mục tôi đang đề cập hoặc thư mục chứa tài nguyên thư, tôi có sai không? – user962206

4

Đối khởi động mùa xuân bạn cần một cái gì đó như thế này:

@Bean 
public MessageSource messageSource() { 
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); 
    messageSource.setBasename("/WEB-INF/classes/messages"); 
    return messageSource; 
} 
Các vấn đề liên quan