Tag Library

Anyframe Web에서는 Struts Html Tag를 확장한 Anyframe Html Tag를 제공한다. Anyframe Html Tag Library는 errors, messages 두가지 Tag를 포함하고 있으나, errors Tag는 Struts 1.2 이후 deprecated Tag이므로 본 매뉴얼에서는 다루지 않을 것이다.

Page Navigator Tag

Anyframe Web에서는 UI 구성시 Page Navigation 처리에 대한 편의성을 제공하기 위하여, Page Navigator Tag를 제공한다. 해당 UI 관련 JSP에서 이 Tag를 사용하기 위해서는 JSP의 상단에 다음과 같이 anyframe-pagenavigator.tld 파일을 taglib으로 지정해 주도록 한다.
<%@ taglib uri='/WEB-INF/anyframe-page.tld' prefix='anyframe' %>
위에서와 같이 Page Navigator Tag의 prefix를 'anyframe'으로 정의하였을 경우 아래와 같이 해당 Tag를 사용할 수 있다.
<anyframe:pagenavigator linkUrl="javascript:fncGetUserList(2);" 
	   pages="<%=resultPage%>" formName="listForm"
	firstImg="sample/images/ct_btn_pre.gif" 
	prevImg="sample/images/ct_btn_pre01.gif" 
	lastImg="sample/images/ct_btn_next.gif" 
	nextImg="sample/images/ct_btn_next01.gif" />
이 때 pages라는 속성의 값은 anyframe.common.Page 타입의 객체로 할당해 주어야 함에 유의하도록 한다.

Messages Tag

Messages Tag는 ActionMessage 객체 내의 대체 문자열에도 Message Resource Bundle을 이용하여 국제화를 지원할 수 있도록 Struts Html의 Messages Tag를 확장하였다.
다음은 Anyframe Messages Tag의 구현체인 anyframe.web.struts.util.DefaultMessagesTag의 일부이다.
ActionMessage report = (ActionMessage) this.iterator.next();

Object[] obj = report.getValues();
if (obj != null) {
    for (int i = 0; i < obj.length; i++) {
    	
        String argKey = obj[i].toString();
        String argValue = TagUtils.getInstance().message(pageContext,
                bundle, locale, argKey, null);
        obj[i] = argValue == null ? argKey : argValue;
        
    }
}
String msg = TagUtils.getInstance().message(pageContext, bundle,
        locale, report.getKey(), obj);
위의 소스코드에서와 같이 대체 문자열에 대하여 Message Resource Bundle로부터 해당 key에 대한 값을 찾아 ActionMessage에 설정하게 된다. 이때 해당 Message Resource Bundle에 key가 정의되어 있지 않은 경우 해당 key를 그대로 대체 문자열로써 설정하게 구성되어 있다.
또한 ActionMessage에 suffix를 추가할 수 있다. 이 경우 UI에 해당 메시지 표현시 suffix가 추가되어 보여진다.
if (suffix != null && suffix.length() > 0) {
       String suffixMessage = TagUtils.getInstance().message(
       pageContext, bundle, locale, suffix);

       if (suffixMessage != null) {
           TagUtils.getInstance().write(pageContext, suffixMessage);
       }
}

Error Page 구성

다음은 Anyframe Messages Tag를 사용하여 해당 UI에 에러 메시지를 출력하는 commonError.jsp 의 일부분이다.
<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="/WEB-INF/anyframe-html.tld" prefix="anyframehtml" %>

<table width="95%" align="left">
	<tr>
		<td class="common_error">
			<anyframehtml:messages id="msg" 
				bundle='<%=request.getParameter("bundle")%>' 
				header="errors.header" suffix="errors.suffix">		
			   <bean:write name="msg"/>
			</anyframehtml:messages>
		</td>
	</tr>
</table>

Resources

  • 다운로드
  • 이클립스 프로젝트 형태의 샘플 웹 어플리케이션을 포함하고 있는 anyframe-struts-sample-extensions.zip 파일을 다운받은 후, 테스트 환경 설정 을 참조하여 위에서 제시한 예제 코드를 실행해 볼 수 있다.
    Name
    Download
    anyframe-struts-sample-extensions.zip
    Download


  • 참고자료