둘러보기 생략.
 

안녕하세요. custom tag 관련 anyframe:message 문의입니다.

안녕하세요.

한영변환이 필요하기때문에 message.properties 를 한글, 영문 버전 두가지로 놓고 변환하여 사용할 생각입니다.

목록성 화면은 현재 display tag 를 사용중에 있습니다.

물론 한영변환시에 display tag 로 만들어지는 table tag 안에 head 부분도 한영변환이 되어야 겠지요.

message.properties 파일을 읽어올때.

일반 화면상에서 anyframe:message 를 이용하면 정상적으로 한글이 들어옵니다.

헌데 display tag 안에 titleKey="aaa.aaa" 이렇게 했을경우 영문은 정상적으로 보이지만 한글은 깨져서 보입니다.

이럴경우에 displat tag 안에 titleKey에 anyframe:message 를 적용해서 사용해야하는건지 문의드립니다.

적용이 가능하다면 어떻게 해야하는지도 문의드립니다.

적용이 불가하다면 어찌그런지도 설명좀 해주시면 감사하겠습니다.

이런식으로 구현할 경우 어찌해야하는지도 문의드립니다.

메일 보내주신거에 대해서 글 내용 수정해서 다시 보내드렸는데..

답변이 없으셔서 이렇게 다시 글을 올립니다.

두서가 없이 글을 쓴것 같네요.

좋은 하루 되세요.

첨부 파일날짜파일 크기조회수최근 다운로드
sample.zip2010-05-0316.86 MB1422 주 2 일 전

답변입니다.

orientalgirl님,

먼저 목록 페이지에서 Display Tag를 사용하시는 경우, Performance 이슈가 있으므로
주의하여 사용하셔야 합니다.

Anyframe에서 자체적으로 성능 테스트를 수행해본 결과, Display Tag를 사용하여 목록 페이지를 구현하는 방식이
속도가 현저하게 저하되어 더이상 샘플코드로도 Display Tag를 사용하지 않기로 내부적으로 결정하였습니다.
차후 릴리즈되는 Anyframe 샘플코드에서는 더이상 Display Tag를 사용하지 않습니다.

지금 orientalgirl님이 수행하시는 프로젝트에서도 원하시는 성능이 나오는지 확인해보시기 바랍니다.
가급적 사용하지 않으시길 권고합니다.

아래는 위 질문에 대한 답변입니다.

질문) display tag 안에 titleKey="aaa.aaa" 이렇게 했을경우 영문은 정상적으로 보이지만 한글은 깨져서 보입니다.
이럴경우에 display tag 안에 titleKey에 anyframe:message 를 적용해서 사용해야하는건지 문의드립니다.

답변) 아래와 같이 display:column Tag 내의 titleKey attribute를 사용하시게 되는데
이때 titleKey와 함께 anyframe message Tag를 사용하실 수가 없습니다.

      <display:column property="prodName" sortable="true" titleKey="product.prodName" maxLength="20"/>

display:column Tag를 확장하여 적용하지 않는 한, 2개의 Tag를 함께 사용하기 어렵습니다.
이러한 경우, 아래 2가지 방식 중 하나를 채택하여 해결하실 수 있습니다.

첫번째 방식) message properties 파일을 Properties Editor Plugin이나 native2asc을 이용하여
아래와 같이 unicode 값으로 한글을 작성한 경우에는, 추가 작업 없이도
display tag 안에 titleKey="product.prodName" 라고 작성하여 한글을 문제없이 화면에서 보실 수 있습니다.

      product.prodName=\uc0c1\ud488\uba85
      ...

두번째 방식) message properties 파일을 UTF-8 인코딩 방식으로 작성한 경우 즉, 아래와 같이 작성하셨다면 추가 작업이 필요합니다. (2.1~2.4 수행)
현재 orientalgirl님이 원하시는 방식인 것으로 판단됩니다.

      product.prodName=상품명
       ...

2.1) context-common.xml 파일의 messageSource Bean을 사용한다면 아래와 같이 EncodingResourceBundleMessageSource
클래스를 사용하시기 바랍니다. 차후 릴리즈될 Anyframe 버전에는 함께 배포될 예정입니다만, 아직 배포전이므로
제가 첨부해드린 프로젝트 내의 testmsg.common.EncodingResourceBundleMessageSource 클래스를 사용하시면 됩니다.
패키지는 원하시는대로 변경하셔서 사용하십시오.

          <bean id="messageSource" class="testmsg.common.EncodingResourceBundleMessageSource">
	           <property name="basenames">
	      <list>
		<value>message/message-common</value>					
		<value>message/message-monitor</value>
		<value>message/message-portal</value>
		<value>message/message-generation</value>					
		<value>message/message-productmgmt</value>
		<value>anyframe/core/generic/messages/generic</value>
		<value>anyframe/core/idgen/messages/idgeneration</value>				
		<value>anyframe/core/properties/messages/properties</value>
		<value>anyframe/core/query/messages/query</value>
		<value>anyframe/web/springmvc/messages/springmvc</value>				
	      </list>
          </property>
	  <property name="defaultEncoding"><value>UTF-8</value></property>					
        </bean>

2.2) message properties 파일을 UTF-8 encoding 방식으로 저장한다.
2.3) JSP 페이지
- 일반 화면상에서 <anyframe:message Tag를 사용하지 말고 <spring:message Tag를 사용하십시오.

              <spring:message code="product.prodName"/>
              ...

- Display Tag 안에서 별도 추가 작업 없습니다.

              <display:column property="prodName" sortable="true" titleKey="product.prodName" maxLength="20" />
              ...

2.4) displaytag.properties
Message Resource Bundle을 Spring message source 로부터 얻어낼 때 사용합니다.
(이 설정을 하게 되면 web.xml 파일에 javax.servlet.jsp.jstl.fmt.localizationContext Param 정보를 설정하지 않으셔도
됩니다.)

locale.provider=org.displaytag.localization.I18nSpringAdapter

제가 작성한 샘플 프로젝트를 첨부해드리오니, 참조하시기 바랍니다.

답변감사합니다.

바쁘실텐데..
답변 달아주신점 정말 감사합니다.
가이드해주신데로 적용하니 잘 돌아갑니다.

좋은 하루 되세요.