2012-07-14 3 views
0

새로운 Spring MVC 응용 프로그램에서 작동하는 기본 현지화를 얻으려고합니다. 내가 생각할 수있는 모든 것을 시도했지만 항상 내가하는 일과 관계없이 다음 예외로 끝납니다. 어떤 도움을 크게 주시면 감사하겠습니다 ...Spring MVC 현지화 - 속성 파일을 찾을 수 없습니다.

나는 모든 단일 디렉토리에 속성 파일을 추가하려고했지만 여전히 오류가 발생합니다. 일단 작동 시키면 체계적으로 추가 기능을 제거합니다.

예외 :

07/13/2012 21:06:00.178 [DEBUG] [org.springframework.context.support.ReloadableResourceBundleMessageSource] No properties file found for [messages] - neither plain properties nor XML 
07/13/2012 21:06:00.178 [DEBUG] [org.springframework.context.support.ReloadableResourceBundleMessageSource] No properties file found for [messages_en] - neither plain properties nor XML 
07/13/2012 21:06:00.179 [DEBUG] [org.springframework.context.support.ReloadableResourceBundleMessageSource] No properties file found for [messages_en_US] - neither plain properties nor XML 
07/13/2012 21:06:00.182 [ERROR] [org.springframework.web.servlet.tags.MessageTag] No message found under code 'test.testMessage' for locale 'en_US'. 
javax.servlet.jsp.JspTagException: No message found under code 'test.testMessage' for locale 'en_US'. 

다음은 JSP 항목의합니다 (FMT : 메시지는 단지 도시 ??? test.testMessage 상기 스프링 동안 : 메시지 불면)

<h2><fmt:message key="test.testMessage" />!</h2> 
<h2><spring:message code="test.testMessage" />!</h2> 

다음은 내 comparison-servlet.xml 파일의 구성입니다.

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basename" value="messages" /> 
</bean> 

다음은 전쟁 구조입니다. 꽤 많은 수준의 messages.properties) :

messages.properties 
src 
    messages.properties 
    main 
     messages.properties 
     java 
     ... 
     resources 
      messages.properties 
     webapp 
      index.jsp 
      messages.properties 
      WEB-INF 
       comparison-servlet.xml 
       web.xml 
       messages.properties 
       jsp 
       messages.properties 
        compare.jsp 
        globalIncludes.jsp 
      classes 
       messages.properties 
      resources 
       messages.properties 
    test 
     ... 

확실히 거기에있는 파일을 찾을 수없는 이유는 무엇입니까? 클래스 패스와 관련하여 명시 적으로 설정해야합니까?

+0

, 나는 현재 웹 로직에서이 작업을 실행 해요 :

내 치어 파일이 제거되면

은 모든 것이 잘 작동하기 시작했다. Tomcat을 설치하여 작동하는지 확인했지만 새로운 서버를 사용하기 전에 옵션을 다 써 버리고 싶습니다. – finn0013

답변

0

war 파일 자체에 문제가있는 것으로 판명되었습니다. 특성 파일이 대상 디렉토리에 복사되고 빌드에 포함 된 것처럼 보이지만, 빌드 된 아티팩트에서 특성 파일을 명시 적으로 제외하도록 maven pom 파일이 설정되었습니다. 그런데

<configuration> 
    <packagingExcludes>**/*.properties</packagingExcludes> 
</configuration> 
4

messages.properties를 WEB-INF 디렉토리 아래 폴더에 넣고 basename 속성으로 경로를 설정하십시오. 예를 들어

:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basename" value="/WEB-INF/i18n/messages" /> 
</bean> 

참조 Javadoc을 here.

+1

나는 그것을 다시 시도했지만 여전히 오류가 있었지만, 이번에는 로그에서 다른 것을 발견했다. Message_en_US ([/ WEB-INF/classes/messages]를 MessageSource에 대해 찾을 수 없음 : 기본 이름/번들에 대한 번들을 찾을 수 없음) WEB-INF/classes/messages, 로케일 en_US). 거기에 기본 메시지와 messages_us 먼저 확인하려면 추가해야 할 뭔가가 있습니까? – finn0013

+1

다시 한번 살펴보면 오류 메시지도 달라집니다. 원래는 "[messages]에 대한 속성 파일이 없습니다 - 일반 속성이나 XML이 아닙니다"하지만 이제는 "[/ WEB-INF/classes/messages]를 MessageSource에 대해 찾을 수 없습니다 : 기본 이름/WEB- INF/classes/messages, locale en_US "를 참조하십시오. 이 둘의 차이점은 무엇인지 잘 모르겠다. – finn0013

+0

더 많은 것을 가지고 놀면서, 첫 번째 게시물에 나열된 오류는 파일 경로를 제공하는지 여부에 관계없이 ReloadableResourceBundleMessageSource를 사용할 때 얻는 오류입니다. 내 앞의 주석에 나열된 오류는 경로를 제공하는지, classname :을 사용하든, 또는 확장명이없는 파일의 이름을 사용하는지에 관계없이 ResourceBundleMessageSource에서 얻은 것입니다. – finn0013

관련 문제