2013-02-25 4 views
5

Dies ist meine messageResource ErklärungSpring-Framework: Keine Nachricht unter dem Code für locale gefunden

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

Wenn ich meine Anwendung ausführen, dieser Fehler zeigt sich

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

jetzt in meinem Nachrichten Ordner in web- inf, ich habe die folgenden Nachrichteneigenschaften

messages_en.properties 
messages_fr.properties 
messages.properties 

Was soll ich hier fehlt?

+0

Zuerst alle Nachrichten hier? fil_PH kann eine andere Eigenschaftendatei für Ihren Nachrichtenordner sein. – erhun

Antwort

17

Im Allgemeinen erscheint ein solches Problem nicht wegen Nicht-Existenz Gebietsschema, sondern weil MessageBundle unsachgemäß konfiguriert ist. In Ihrem Fall müssen Sie "/" in Ihrem Basisnamen entfernen.

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

Warum es so ist:

Wenn Sie messages.properties und messages_en.properties Bündel, dann Namen bündeln ist messages. Wenn Sie sie im Ordner WEB-INF haben, ist der Basisname /WEB-INF/messages, d. H. Gemäß/path/to/bundle/bundlename. Wenn Sie messages.properties in /WEB-INF/messages Ordner haben, ist der entsprechende Basisname /WEB-INF/messages/messages.

+0

Warum muss ich das '/' entfernen? – user962206

+0

Sie müssen "/" entfernen, denn wenn Sie basename angeben, sollten Sie eine solche Struktur verwenden: '/ pfad/zu/bundle/bundlename'. Und könnten Sie bitte sagen, ob es geholfen hat? – n1ckolas

+0

Ich dachte, es wäre der Ordner, den ich verweise, oder der Ordner, der die Nachrichtenressourcen enthält, liege ich falsch? – user962206

4

Für das Frühjahr Boot müssen Sie etwas wie folgt aus:

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