복붙노트

[SPRING] messageSource를 사용하여 봄 메시지 코드를 해결할 수 없습니다.

SPRING

messageSource를 사용하여 봄 메시지 코드를 해결할 수 없습니다.

내 응용 프로그램에 사용할 봄에서 messageSource를 연결하려고합니다. 작동하지 않는 경우이 오류가 발생합니다.

내 applicationContext.xml에 messageSource에 대한이 def가 포함되어 있습니다.

   <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);

이 시간에 누군가 도울 수 있습니까?

해결법

  1. ==============================

    1.문제는 리소스 번들과 지정한 로케일을 정의한 방식입니다 (리소스 번들의 검색 순서와 일치하지 않습니다. 번들의 이름을 "messages_en.properties"로 바꾸거나 "getMessage (...)"를 호출하십시오. ) "와 새로운 로케일 ("en ","US ")을 사용합니다. 첫 번째 옵션을 선호합니다.

    문제는 리소스 번들과 지정한 로케일을 정의한 방식입니다 (리소스 번들의 검색 순서와 일치하지 않습니다. 번들의 이름을 "messages_en.properties"로 바꾸거나 "getMessage (...)"를 호출하십시오. ) "와 새로운 로케일 ("en ","US ")을 사용합니다. 첫 번째 옵션을 선호합니다.

  2. ==============================

    2.당신의 경로가 정확하지 않은 것 같습니다. /WEB-INF/classes/messages/messages_en_US.properties 아래에 번들이 있기 때문에 기본 이름 설정은 classpath : messages / messages (이 경우 기본 이름은 경로 및 특성 파일 접두사를 의미)와 유사해야합니다.

    당신의 경로가 정확하지 않은 것 같습니다. /WEB-INF/classes/messages/messages_en_US.properties 아래에 번들이 있기 때문에 기본 이름 설정은 classpath : messages / messages (이 경우 기본 이름은 경로 및 특성 파일 접두사를 의미)와 유사해야합니다.

  3. ==============================

    3.다음 콩을 사용하고 파일에 대한 경로를 지정하지 않고 잘 작동합니다 :

    다음 콩을 사용하고 파일에 대한 경로를 지정하지 않고 잘 작동합니다 :

    <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로 사용해보십시오.

  4. ==============================

    4.이 시도 문자열 가져 오기에 대한 주석을보십시오.

    이 시도 문자열 가져 오기에 대한 주석을보십시오.

    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();
        }
    
    
    }
    
  5. from https://stackoverflow.com/questions/4568230/cannot-resolve-spring-message-code-using-messagesource by cc-by-sa and MIT license