2013-02-25 15 views
5

Questa è la mia dichiarazione messageResourceSpring Framework: Nessun messaggio trovato sotto il codice per il 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> 

Quando eseguo la mia applicazione, questo errore si presenta

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

ora all'interno della cartella i miei messaggi all'interno web- inf, ho le seguenti proprietà del messaggio

messages_en.properties 
messages_fr.properties 
messages.properties 

Cosa mi manca qui?

+0

First tutti i vostri messaggi qui? fil_PH può essere un altro file di proprietà per la cartella dei messaggi. – erhun

risposta

17

In generale, questo problema non si verifica a causa di non impostazioni locali, ma perché MessageBundle non è configurato correttamente. Nel tuo caso sembra che tu debba rimuovere "/" nel tuo basename.

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

Perché è così:

Se avete messages.properties e messages_en.properties fascio, quindi Nome del bundle è messages. Se li hai nella cartella WEB-INF, il nome di base è /WEB-INF/messages, ad esempio in/path/to/bundle/bundlename. Se si dispone di messages.properties nella cartella /WEB-INF/messages, il nome di base corrispondente è /WEB-INF/messages/messages.

+0

perché devo rimuovere il '/'? – user962206

+0

È necessario rimuovere "/" perché quando si specifica il nome base, è necessario utilizzare tale struttura: '/ percorso/per/pacchetto/nome bundle'. E potresti dirmi se è stato d'aiuto? – n1ckolas

+0

Ho pensato che fosse la cartella a cui mi riferivo o la cartella che contiene le risorse del messaggio, ho sbagliato? – user962206

4

Per avvio primavera avete bisogno di qualcosa di simile:

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