fmt:message vs spring:message

1,410 views
Skip to first unread message

Sanghyuk Jung

unread,
Jan 16, 2012, 3:45:57 AM1/16/12
to ks...@googlegroups.com
 안녕하세요, 오랜만(?)에 질문 올립니다.

 국제화를 고려한 페이지를 만들면서 Spring의 messageSource를 이용하고 있습니다.

아래와 같이 선언해서 쓰고 있죠..
    <bean class="org.springframework.context.support.ReloadableResourceBundleMessageSource" id="messageSource"
         p:basenames="WEB-INF/i18n/messages,WEB-INF/i18n/application" 
         p:fallbackToSystemLocale="false"/>
 

  메시지를 jsp에서 불러올때 처음에는 spring:message 태그를 쓰다가 혹시나 싶어서 fmt:message로 바꾸어보니 똑같은 방식으로 잘 동작하고 있습니다.

 resource bundle파일의 리로딩이나 파라미터 넘기는 것등 spring:message로 할 수 있는 건 다 가능해보이는데, spring:message만의 장점은 어떤 것이 있을까요?
 지금까지 하나 발견한 것은 틀린키가 넘어갔을 때 spring:message에서는 명시적으로 에러를 반환하게 만들 수 있다는 것 정도인데요..

 다른 표현식이 전부 jstl로 가고 있어서 fmt:message를 spring:message로 대체할까 생각 중인데, 혹시 비슷한 고민해보신 분은 안계신가요?


Sanghyuk Jung

unread,
Jan 16, 2012, 4:25:34 AM1/16/12
to ks...@googlegroups.com
마지막 문장이 거꾸로 되었네요;
->
 다른 표현식이 전부 jstl로 가고 있어서 spring:message를 fmt:message로 대체할까 생각 중인데, 혹시 비슷한 고민해보신 분은 안계신가요?


2012년 1월 16일 오후 5:45, Sanghyuk Jung <ben...@gmail.com>님의 말:

Sewon Ann

unread,
Jan 16, 2012, 4:55:24 AM1/16/12
to ks...@googlegroups.com
제가 제대로 기억하고 있는지 모르겠는데, spring 의 resource bundle의 장점은 xml 형태를 지원한다는 것입니다.
반대로 java 의 resource bundle은 properties만 지원하구요.

java의 .properties 파일은 utf-8이 지원이 안되어 native to ascii 로 암호화(!)를 해야 하지만 spring의 resource bundle을 사용하시면 utf-8이 지원되는 xml 포맷을 사용하실 수 있습니다. 따라서 한글 리소스를 배포하실 때 native to ascii 등이 필요없습니다.

제가 제대로 알고 말씀드리는 것인지 좀 헷갈리네요. 전에 jsr303 관련 발표할 때 그런 문제가 있어서 깜짝 놀랐거든요. (resource bundle이 xml을 지원하지 않아서 너무 구려서요)

혹시 한글 기반의 메시지 리소스 번들 파일이 제대로 동작하는 지 확인해보시겠어요? fmt 로 xml 리소스를 써도 잘 된다면 문제가 아닌데, fmt를 쓰려면 무조건 .properites를 써야 한다면 spring:message 가 관리 측면에서 메리트가 있어보입니다.

--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.

sungchul park

unread,
Jan 16, 2012, 7:43:01 AM1/16/12
to ks...@googlegroups.com
리소스 번들은 어짜피 스프링 Application Context에서 가지고 오는 것이니 XML이나 .properties 파일 둘 다 지원하지 않나요?

기억이 가물가물하여 소스를 보니 fmt:message에 없는 몇가지 속성이 더 있네요.
일단 fmt:message에는

key
bundle
var
scope

이렇게 네가지가 있구요.

spring:message에는 다음 7가지가 있습니다.

code : fmt:message의 key에 해당
arguments: 리소스 번들의 메시지에 {0}, {1} 같은 기호 자리에 들어갈 값을 나열
argumentSeparator: arguments 속성에 값을 구분하는 기호, 기본은 콤마(',')
text: code에 해당하는 메시지가 리소스 번들에 없을 때 사용될 메시지
message: MessageSourceResolvable 인터페이스를 구현한 객체 또는 MessageSourceResolvable를 나타내는 spel 식. 에러 메시지를 표시하려고 한다면 필요하겠죠.
htmlEscape: true일 때 HTML 엔티티를 인코딩
javaScriptEscape: true일 때 자바스크립트 문자열로 인코딩
var: fmt:message와 동일
scope: fmt:message와 동일

이렇습니다.

2012년 1월 16일 오후 6:55, Sewon Ann <kin...@gmail.com>님의 말:

Sewon Ann

unread,
Jan 16, 2012, 8:21:18 AM1/16/12
to ks...@googlegroups.com
앗 글쿤요!!

2012. 1. 16. 오후 9:43 sungchul park <gyu...@gmail.com> 작성:

Sanghyuk Jung

unread,
Jan 16, 2012, 8:35:44 PM1/16/12
to ks...@googlegroups.com
네, 파라미터 넘기는 방식이 fmt:message는

<fmt:message key="main_hello">
<fmt:param>benelog</fmt:param>
</fmt:message>

인 반면에 spring:message는 좀 더 간결하게

<spring:message code="main_hello" arguments="benelog!"/><br/>

되어서 더 좋은 점도 있네요.

그리고 위에서 말씀드린 것처럼 명시적인 에러반환 등 spring:message가  더 좋은 점이 있어보입니다..

그런데 현재 프로젝트에서는 다른 영역에서는 spring의 커스텀태그를 쓰지 않아서 일관성을 위해서 fmt:messsage쪽으로 갈 것 같습니다...

참고로, 세원님께서 언급하신데로 resource bundle 파일을 .properties로 했을 때는 귀찮은 변환 때문에  Eclipse plugin을 써야했는데, 이것도 .xml파일로 적용했습니다.

처음에는 Eclipse plugin이 어느것이 좋은가 비교하고 있었는데, 아래 글을 보고 .properties파일이 시대 착오적(?)이라는 것을 깨달았네요 ^^;



이것저것 찾다보니 anyframe에서는 .properties파일을 써도 따로 native to ascii 변환이 필요없도록 anyframe:message라는 태그를 지원하는 것도 발견했습니다.


그래도 결국 .properties파일 대신 properties xml을 쓰는 것이 편안한 길이 아닌가 합니다..





2012년 1월 16일 오후 10:21, Sewon Ann <kin...@gmail.com>님의 말:

sungchul park

unread,
Jan 16, 2012, 11:49:04 PM1/16/12
to ks...@googlegroups.com
저도 Properties에 loadFromXML(...)이 생긴 걸로 인해 자바 5에 대한 고마움이 한층 커었죠.
자바 5는 여러모로 자바 개발자에게 축복이었습니다.

언어적으로 여러가지로 개선된 자바 7도 얼른 보급됐으면 좋겠고 람다식이 들어갈 예정인 자바 8도 이쁘게 잘 나오면 좋겠네요.

2012년 1월 17일 오전 10:35, Sanghyuk Jung <ben...@gmail.com>님의 말:

남호정

unread,
Jan 17, 2012, 4:04:32 AM1/17/12
to ks...@googlegroups.com
탈퇴 부탁 드립니다 
과도한 메일 수신이 좀 일에 방해되서요
그럼 좋은 하루되세요

kinostar phone 보냄

Jan 16, 2012 9:43 PM sungchul park <gyu...@gmail.com> 작성:

Sewon Ann

unread,
Jan 17, 2012, 4:08:25 AM1/17/12
to ks...@googlegroups.com
메일링 탈퇴는 직접 하시면 됩니다.


로 메일을 보내세요.

sungchul park

unread,
Jan 17, 2012, 4:20:26 AM1/17/12
to ks...@googlegroups.com

메일 양이 많아 부담된다면 매일 종합된 메일 한 건만 받도록 설정할 수 있으니 참고하십시오

2012. 1. 17. 오후 6:04에 "남호정" <kinos...@gmail.com>님이 작성:

Jihwan Kim

unread,
Jan 17, 2012, 7:23:11 PM1/17/12
to ks...@googlegroups.com
gmail을 쓰시면 필터링 기능을 쓰시면 좋은데. 그럼 받은편지함에서는 안보이게 할 수 있습니다. 이 메일들만 따로 관리할 수 있어요.

2012년 1월 17일 오후 6:20, sungchul park <gyu...@gmail.com>님의 말:

양태호

unread,
Sep 12, 2013, 4:30:23 AM9/12/13
to ks...@googlegroups.com
속성을 깔끔하게 정리해주셔서 고맙습니다^^
Reply all
Reply to author
Forward
0 new messages