[SPRING] messageSource를 사용하여 봄 메시지 코드를 해결할 수 없습니다.
SPRINGmessageSource를 사용하여 봄 메시지 코드를 해결할 수 없습니다.
내 응용 프로그램에 사용할 봄에서 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.문제는 리소스 번들과 지정한 로케일을 정의한 방식입니다 (리소스 번들의 검색 순서와 일치하지 않습니다. 번들의 이름을 "messages_en.properties"로 바꾸거나 "getMessage (...)"를 호출하십시오. ) "와 새로운 로케일 ("en ","US ")을 사용합니다. 첫 번째 옵션을 선호합니다.
문제는 리소스 번들과 지정한 로케일을 정의한 방식입니다 (리소스 번들의 검색 순서와 일치하지 않습니다. 번들의 이름을 "messages_en.properties"로 바꾸거나 "getMessage (...)"를 호출하십시오. ) "와 새로운 로케일 ("en ","US ")을 사용합니다. 첫 번째 옵션을 선호합니다.
-
==============================
2.당신의 경로가 정확하지 않은 것 같습니다. /WEB-INF/classes/messages/messages_en_US.properties 아래에 번들이 있기 때문에 기본 이름 설정은 classpath : messages / messages (이 경우 기본 이름은 경로 및 특성 파일 접두사를 의미)와 유사해야합니다.
당신의 경로가 정확하지 않은 것 같습니다. /WEB-INF/classes/messages/messages_en_US.properties 아래에 번들이 있기 때문에 기본 이름 설정은 classpath : messages / messages (이 경우 기본 이름은 경로 및 특성 파일 접두사를 의미)와 유사해야합니다.
-
==============================
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.이 시도 문자열 가져 오기에 대한 주석을보십시오.
이 시도 문자열 가져 오기에 대한 주석을보십시오.
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(); } }
from https://stackoverflow.com/questions/4568230/cannot-resolve-spring-message-code-using-messagesource by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] JavaFX 및 Spring - Bean은 자동 연결을 지원하지 않습니다. (0) | 2019.04.13 |
---|---|
[SPRING] SD MongoDB 다형성 하위 문서 (0) | 2019.04.13 |
[SPRING] Spring 애플리케이션 컨텍스트 파일에리스트 정의하기 (0) | 2019.04.13 |
[SPRING] Tomcat에서 JPA, Hibernate 및 Spring을 사용하여 클래스 로더 누출을 피하는 방법 (0) | 2019.04.12 |
[SPRING] 자바의 미래 - Spring 인증은 AuditorAware에서 null입니다. (0) | 2019.04.12 |