spring의 MessageSource를 통해서 Locale에 따라 선택된
message properties의 모든 key값을 가져올 수 있는 방법이 있을까요?
저의 경우 bean에 정의된 messageSource의 대상 클래스를
ReloadableResourceBundleMessageSource로 선언해서 사용하고 있습니다.
위 클래스에 구현된 함수중
1. getMergedProperties(Locale locale)
2. getProperties(String basename)
을 테스트 해보았습니다.
1번의 경우 spring의 Locale Resolver를 통해서 설정된 Locale과는 상관없이 결과값이 나타났습니다.
선언된 message properties을 merge한 값을 취할 수 있었습니다.
2번의 경우 basename을 이렇게 저렇게 빠꿔봤지만 properties 파일을 찾질 못했습니다.
( 저의 경우 properties파일이 classes밑에 존재하지 않고 WEB-INF/config 하위에 존재합니다.)
어떻게 하면 Locale Resolver를 통해서 설정(선택)된 message properties의 모든 key값을 얻을
수 있을까요?
지금 원하시는 게 머지한 메시지가 아니라 특정 로케일에 해당하는 메시지 파
일에 정의된 키 값만인 건가요?
> 2번의 경우 basename을 이렇게 저렇게 빠꿔봤지만 properties 파일을 찾질 못했습니다.
> ( 저의 경우 properties파일이 classes밑에 존재하지 않고 WEB-INF/config 하위에 존재합니다.)
getProperties()의 인자로 넘길 값은 basename이 아니라 filename 같은데 아닌가요?
> 어떻게 하면 Locale Resolver를 통해서 설정(선택)된 message properties의 모든 key값을 얻을
> 수 있을까요?
만약 특정 로케일용으로만 정의된 메시지의 키 값을 얻으시겠다면
calculateFilenamesForLocale()를 호출해서 얻어진 파일들을 직접 읽어 추출
하시면 될 듯 합니다. ReloadableResourceBundleMessageSource의
getProperties()를 사용하셔도 되고요.
getProperties() 의 경우는
filename으로 /WEB-INF 를 포함한 경로 또는 물리적 파일 전체 경로를 인자로 넘겨도 해당 파일을 찾지 못했었습니
다.
말씀해주신 calculateFilenamesForLocale() 로 다시한번 테스트 해봐야 겠습니다.
답변 감사드립니다.
혹시 다른 좋은 방법 있으시면 답변 부탁드릴께요...
오늘도 행복한 하루 보내세요.