ResourceBundle nicht gefunden für die MessageSource-wenn platziert in einem Ordner
Ich bin versucht, Ressourcen-Bundle mit Spring ' s Message Source. Hier ist die Art, wie ich bin, es zu tun:
@Component
public class MessageResolver implements MessageSourceAware {
@Autowired
private MessageSource messageSource;
public void setMessageSource(MessageSource messageSource) {
this.messageSource = messageSource;
}
public String getMessage(){
return messageSource.getMessage("user.welcome", new Object[]{"Rama"} , Locale.US);
}
}
Und hier ist meine Ordner-Struktur:
messages_en_US.Eigenschaften enthält nur eine Zeile:
user.welcome=Welcome {0}
Hier ist der xml-Konfiguration verwendet:
<bean name="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<value>resourcebundles/messages</value>
</property>
</bean>
Hier ist die Fehlermeldung die ich erhalte:
WARNING: ResourceBundle [resourcebundles/messages] not found for MessageSource: Can't find bundle for base name resourcebundles/messages, locale en_US
Exception in thread "main" org.springframework.context.NoSuchMessageException: No message found under code 'user.welcome' for locale 'en_US'.
Aber wenn ich meine Ressource-bundle, um direkt unter dem Ressourcen-Ordner, es ist in Ordnung. In diesem Fall, hier ist die xml-Konfiguration, die ich benutze:
<bean name="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<value>messages</value>
</property>
Ist, ist, dass wenn ich verwenden ResourceBundleMessageSource, ich sollte meine Ressource-bundles direkt unter den Ressourcen? Wenn ich halten Sie es in den angegebenen Ordner ist nur, gibt es einen anderen Weg, um dieses eine Werk?
Dank!
Können Sie Ihre xml-Konfiguration für resourceBundle hier?
Bearbeitet die Frage und fügte hinzu, xml verwendet. Bitte schauen Sie hinein.
Wie bereits erwähnt in der post ich bin mit der richtigen Namensgebung für den resourcebundle-Datei. Das problem ist nicht, weil der name der Datei, aber da hielt ich es in einen Unterordner.
InformationsquelleAutor Prasanth | 2012-06-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie Ihre Konfiguration um die folgenden für die messageSource-bean in der xml-Datei.
Da alle Ihre Eigenschaften, - Dateien im classpath des java-definieren Sie den Pfad mit dem Präfix
classpath*:
sonst wird es Aussehen in das web-Verzeichnis Ihrer Anwendung.Hoffe, dies hilft Ihnen. Cheers.
Hier wird die exception geworfen:Exception in thread "main" org.springframework.Kontext.NoSuchMessageException: Keine Nachricht gefunden unter dem code " Benutzer.willkommen " für Gebietsschemas 'en_US'.
InformationsquelleAutor Japan Trivedi
junge, vielleicht können Sie ändern Sie die xml-Konfiguration wie folgt:
verwenden
statt
alle Konfigurationen wie diese:
classpath:..
ohne Sternchen (so wie hier). Das Sternchen verwendet, um brechen den loader und die Nachricht wurde nicht behoben. Ich habe nicht getestet, wenn die Eigenschaften der Nachricht werden nicht in die Finale Anwendung (also erfordernclasspath*:
), denn es war nicht mein Fall.InformationsquelleAutor jis117
Es ist fast 2015 und ich bin mit Spring 4.1.2.RELEASE und es ist definitiv ein problem mit der Art, wie die messageSource-bean konfiguriert werden muss, damit es greift die Ziel-Ressource-bundle.
1) Wenn die messageSource-bean ist vom Typ ReloadableResourceBundleMessageSource es nicht:
2) Wenn die messageSource-bean ist vom Typ ResourceBundleMessageSource es funktioniert:
3) Wenn Sie mithilfe einer XML-Konfigurationsdatei, kombiniert mit einer Konfigurations-Klasse - es funktioniert (beachten Sie, wie die base bundle konfiguriert ist, in einer Klasse wie Qualifikation, Art und Weise, d.h. 'config.Nachrichten' nicht 'config/messages'): (applicationContext-i18n.xml)
und:
4) am wichtigsten... wenn Sie einen WebApplicationInitializer (keine web.xml), hast du nicht zu registrieren, die configuration-Klasse, definiert die "messageSource" - Bohne in den root-Kontext, nicht in der dispatcher-servlet-Kontext:
arbeitete für mich <bean id="messageSource" class="org.springframework.Kontext.Unterstützung.ResourceBundleMessageSource" p:basename="config.Nachrichten" p:useCodeAsDefaultMessage="true"/>
InformationsquelleAutor Tom Silverman
In meinem Fall, mit Spring 4.3.2.RELEASE und java-config und ein ReloadableResourceBundleMessageSource, ich hatte, um zu definieren, meine template-engine wie eine Bohne sonst meine Nachrichten wurden nicht immer gelöst.
Hier ist ein Beispiel einer funktionierenden Konfiguration.
AppConfig.java
InformationsquelleAutor Timothy Anyona
Konfigurieren Sie Ihre Nachrichten Weg wie oben gezeigt.
Überprüfen Sie auch, Klasse name.
Haben u sich geändert-Klasse, die als ReloadableResourceBundleMessageSource?
Selbst wenn ich Sie ändern den Namen der Klasse, es funktioniert nicht!
Ändern Sie ur-Eigenschaften-Datei-Namen als messages_en.Eigenschaften.
Nun geht es nach dem ändern der Datei Namen messages_en.Eigenschaften Aber wenn ich die Namensgebung meiner Datei als messages_en_US und die übergabe der Gebietsschema als das Gebietsschema.UNS, ich Verstand nicht, warum es nicht funktioniert?
InformationsquelleAutor Sachin J
Ich habe folgende Konfiguration und es ist in Ordnung, die
InformationsquelleAutor Sanchi Girotra
Was für mich gearbeitet war wirklich etwas einfach.
War es
Ich es geändert
Nur ein \ , /ändern Sie es fest für mich. Ich bin mit einem MAC.
Habe ich nicht ausprobiert
*classpath
, vielleicht nicht für mich gearbeitet.InformationsquelleAutor Siddharth
Ich habe folgende Konfiguration und es funktioniert Prima in meinem Projekt.
Meine Nachrichten.Eigenschaften ist in folgenden Pfad:
..\WebContent\WEB-INF\resources
InformationsquelleAutor Ganesh Teltia
Ich habe folgende Konfiguration und es funktioniert Prima in meinem Projekt.
Ort:
src\main\resources\configurations\messages_en.properties
InformationsquelleAutor Shekhar Jagadale
YAML-version für diese
Finden Sie in Dokumentation ausführliche Beschreibung.
Außerdem sollte ich erwähnen, dass die Standard -
MessageSource
bean ist eineResourceBundleMessageSource
die bereits Lesen form eines classpath-so gibt es keine Notwendigkeit zu verwenden nonation wieclasspath:i18n/validation
.Directory-Struktur
InformationsquelleAutor Edgar Asatryan