невозможно разрешить весенний код сообщения, используя messageSource - PullRequest
3 голосов
/ 31 декабря 2010

Я пытаюсь подключить источник сообщений весной для использования в моем приложении.Он не работает, выдает эту ошибку:

org.springframework.context.NoSuchMessageException: не найдено сообщение под кодом 'validation_required' для локали 'en'.

my applicationContext.xml содержит это определение для messageSource:

   <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <value>classpath:messages</value>
            </list>
        </property>
    </bean>

мой файл свойств сообщений находится в:

/WEB-INF/classes/messages/messages_en_US.properties

Наконец, вызов, который я сделал, который генерирует ошибку::

String message = messageSource.getMessage("validation_required", null, Locale.ENGLISH);

Кто-нибудь может мне помочь в этот час?

Ответы [ 4 ]

4 голосов
/ 31 декабря 2010

Кажется, ваш путь не верен. поскольку ваш пакет находится в каталоге /WEB-INF/classes/messages/messages_en_US.properties, настройка базового имени должна выглядеть следующим образом: classpath: messages / messages (базовое имя в этом случае означает префикс пути и файла свойств).

3 голосов
/ 31 декабря 2010

Проблема в том, как вы определили пакет ресурсов и указанную локаль (они не совпадают с порядком поиска пакета ресурсов. Переименуйте свой пакет в "messages_en.properties"). или вызовите «getMessage (...)» с новой локалью («en», «US»). Я предпочитаю первый вариант.

2 голосов
/ 31 декабря 2010

Я использую следующий bean-компонент, и он работает без указания пути к файлу:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" abstract="false"
      scope="singleton" lazy-init="default">
    <property name="basename" value="messages"/>
</bean>

Хотя файлы, которые я использую, просто называются «messages_en.properties» и «messages_es.properties», хорошо, вы понимаете.

Когда вы звоните

    messageSource.getMessage("validation_required", null, null);

вы получаете исключение? Попробуйте использовать это имя файла messages_en.properties или messages_us_en.properties

0 голосов
/ 20 августа 2014

Попробуйте посмотреть комментарий для получения строки

package yours;
import java.util.Locale;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;

/**
 *  
 * Permet la recuperation des String du LocaleContextHolder hors des jsp 
 * Les langues sont placées dans main/ressources/messagesSources.properties 
 * 
 * Example : new MSG("recuperation_name_invalid").value()
 * 
 */
@Configurable
public class MSG
{

    private String key;

    @Resource(name = "messageSource")
    private MessageSource messageSource;

    public MSG(String key)
    {
        super();
        this.key = key;
    }

    public String value()
    {
        Locale locale = LocaleContextHolder.getLocale();

        return messageSource.getMessage(key, new Object[0], locale);
    }

    @Override
    public String toString()
    {
        return value();
    }


}
...