Anyframe HTML Tag Library

Anyframe Web에서는 Struts-Html Tag Library를 확장한 Anyframe Html Tag Library를 제공한다. Anyframe Html Tag Library에는 errors, messages 의 두가지 tag 를 제공하나 errors는 deprecated tag 이다. (Since struts version 1.2)

Messages tag

    Messages tag는 ActionMessage의 대체문자열에도 resource properties를 이용하여 국제화를 지원할 수 있도록 Struts Html의 messages tag를 확장한 태그이다. 이를 통하여 resource properties에서 사용하는 key를 현저하게 줄일 수 있다.
    Message tag의 클래스인 anyframe.web.struts.common.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);
    위의 소스코드에서와 같이 대체문자열에 대하여 resoruce properties에서 해당 key에 대한 value를 ActionMessage의 대체문자열로 설정하게 된다. 이때 resource properties에 위의 key가 없는 경우 해당 key를 그대로 대체문자열로 설정하게되어 기존의 Struts HTML messages tag와 호환되게 구성되어 있다.
    또한 ActionMessage에 suffix를 추가하여 ActionMessages를 구성하는 로직이 추가되었다.
    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 Web에서는 확장된 ActionMessage를 JSP에서 출력하는 commonError.jsp를 제공한다. 소스코드는 다음과 같으며 ActionMessage를 display할 JSP에 commonError.jsp를 import하여 쓰면 편리하다. 위치는 anyframe/web/commonError.jsp이며 소스코드는 다음과 같다.
    <%@ taglib uri="/WEB-INF/anyframe-html.tld" prefix="anyframehtml" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    
    <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