민서네집

Thymeleaf 에서 properties 파일 참조하기. 본문

Spring

Thymeleaf 에서 properties 파일 참조하기.

브라이언7 2013. 9. 12. 15:07

Thymeleaf 에서 국제화를 위한 ResourceBundleMessage 는 #{...} 으로 쉽게 참조가 되는데, 프로그램 설정용으로 만든 일반 config.properties 파일은 참조하는 방법을 몰랐다.


ResourceBundleMessage 에 추가를 해주면 #{...} 으로 참조가 되는데, Messages_ko.properties 파일과 Messages_en.properties 파일에 동일하게 추가를 해주어야 하고, 프로그램 설정값이 국제화 메시지 파일에 들어가서 관리도 힘들어진다.


config.properties 파일을 참조할 수 있는 방법을 검색해 보았는데, 도움이 될만한 글이...


http://forum.thymeleaf.org/Access-Spring-properties-td4025970.html


Well yes - it's different. But important to the gui nonetheless. Because some settings are locale-independent. For example a contact phone number you want to show in the "about" dialog. The url to report an error. The url for an image in the gui. Etc... 

I've found a way, but a bit heavy on the markup: 

(1) Add ApplicationContext.getEnvironment() as a variable to the template context. Ie env
(2) In the markup the settings can be read as: th:version="${env.getProperty('build.version')}"

But I would really rather have ${build.version} work also. 


setCommonMessages are locale independent. How ever if you have an own solution it's fine.


두번째 방법은 setCommonMessages() 메서드는 스프링 3.2 버전부터 지원하는 메서드라 통과~


첫번째 방법을 응용해 보기로 했다.


Spring 설정 파일에서는 다음을 추가.


<util:properties id="config" location="classpath:config/config.properties" />


HandlerInterceptorAdapter 클래스를 상속받은 클래스를 만들어서 postHandle() 메서드에서 다음과 같이 설정.


@Autowired

private Properties config;


public void postHandle(HttpServletRequest request,

HttpServletResponse response, Object handler,

ModelAndView modelAndView) throws Exception {


if( modelAndView != null ) {

modelAndView.addObject("config", config);

}

...

}


사용할 때는 Thymeleaf html 에서 다음과 같이...


<script type="text/javascript" th:src="${config.getProperty('server.ip') + '/scripts/common.js'}"></script>


var gSeverUrl = [[${config.getProperty('server.ip')}]];



Comments