2013-02-25 5 views
5

wiadomość To jest moja deklaracja messageResourceSpring Framework: Nie znaleziono pod kodem dla lokalizacji

<?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> 

Kiedy uruchomić mój wniosek, ten błąd pojawia się

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

teraz wewnątrz folderu Moje wiadomości wewnątrz WEB- inf, Mam następujące właściwości komunikatu:

messages_en.properties 
messages_fr.properties 
messages.properties 

Czego tu mi brakuje?

+0

Pierwsze wszystkie tutaj wiadomości? fil_PH może być kolejnym plikiem właściwości dla twojego folderu wiadomości. – erhun

Odpowiedz

17

Generalnie taki problem nie pojawia się z powodu braku ustawień narodowych, ale ponieważ MessageBundle jest skonfigurowany nieprawidłowo. W twoim przypadku wydaje się, że musisz usunąć "/" w swojej nazwie.

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

Dlaczego to jest tak:

Jeśli masz messages.properties i messages_en.properties pakiet, a następnie pakiet nazwa jest messages. Jeśli masz je w folderze WEB-INF, wtedy nazwa bazowa to /WEB-INF/messages, tj. Zgodnie z/path/to/bundle/bundlename. Jeśli masz messages.properties w folderze /WEB-INF/messages, to odpowiednią nazwą jest /WEB-INF/messages/messages.

+0

dlaczego muszę usunąć "/"? – user962206

+0

Musisz usunąć znak "/", ponieważ podczas określania nazwy bazowej należy użyć takiej struktury: '/ path/to/bundle/bundlename'. Czy mógłbyś powiedzieć, czy to pomogło? – n1ckolas

+0

Myślałem, że to folder, który miałem na myśli, lub folder, który zawiera zasoby wiadomości, czy jestem w błędzie? – user962206

4

Na starcie wiosny trzeba coś takiego:

@Bean 
public MessageSource messageSource() { 
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); 
    messageSource.setBasename("/WEB-INF/classes/messages"); 
    return messageSource; 
}