복붙노트

[SPRING] Spring 프레임 워크 : 로케일 용 코드 아래에 메시지가 없습니다.

SPRING

Spring 프레임 워크 : 로케일 용 코드 아래에 메시지가 없습니다.

이것은 내 messageResource 선언입니다.

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

내 응용 프로그램을 실행할 때이 오류가 나타납니다.

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

이제 web-inf 내부의 메시지 폴더 안에 다음과 같은 메시지 속성이 있습니다.

messages_en.properties
messages_fr.properties
messages.properties

나는 무엇을 여기에서 놓치고 있냐?

해결법

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

    1.일반적으로 이러한 문제는 존재하지 않는 로켈 때문에 나타나지 않지만 MessageBundle이 잘못 구성되어 있기 때문에 나타납니다. 귀하의 경우 귀하의 basename에서 "/"를 제거해야 할 것 같습니다.

    일반적으로 이러한 문제는 존재하지 않는 로켈 때문에 나타나지 않지만 MessageBundle이 잘못 구성되어 있기 때문에 나타납니다. 귀하의 경우 귀하의 basename에서 "/"를 제거해야 할 것 같습니다.

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

    왜 그렇게 :

    messages.properties 및 messages_en.properties bundle이 있으면 bundle name은 메시지입니다. WEB-INF 폴더에있는 경우 basename은 / path / to / bundle / bundlename에 따라 / WEB-INF / messages입니다. / WEB-INF / messages 폴더 내에 messages.properties가 있으면 해당 기본 이름은 / WEB-INF / messages / messages입니다.

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

    2.스프링 부트에는 다음과 같은 것이 필요합니다.

    스프링 부트에는 다음과 같은 것이 필요합니다.

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

    3.Spring 부트 application.properties에도 지정할 수 있습니다.

    Spring 부트 application.properties에도 지정할 수 있습니다.

    # INTERNATIONALIZATION 
    spring.messages.basename=i18n/messages
    spring.messages.encoding=UTF-8
    
  4. from https://stackoverflow.com/questions/15065734/spring-framework-no-message-found-under-code-for-locale by cc-by-sa and MIT license