JSTL - customTag를 만들어 보자.

2009. 3. 16. 01:15코드

구성 파일은 아래와 같다.
- java.com.umaking.MyTag.java
- /WEB-INF/tld/mytags.tld
- web.xml설정
- jsp페이지 설정

tag의 변수는 var, message로 정하였으며
tag내에 내용과 message를 같은 데이터로 취급하였다
a. tag내의 내용이 존재하면 message내용은 무시하도록 하였다.

몇 년 만에 찾아보니 참 그러하네...
오래된 기억을 다시 더듬어 보는 느낌 이랄까...
------------------------------------------------------------------------------------------
[com.umaking.MyTag.java]
 
package com.umaking;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;

public class MyTag extends BodyTagSupport {
    private static final long serialVersionUID = 1L;
    private String message = "";
    private String var;
    
    public void setMessage(String message) {
        this.message = message;
    }

    public void setVar(String var) {
        this.var = var;
    }

    @Override
    public int doStartTag() throws JspException {    
        return this.EVAL_BODY_BUFFERED;
    }
    
    @Override
    public int doEndTag() throws JspException {
        JspWriter out = pageContext.getOut();
        
        if(getBodyContent() != null) {
            message = this.getBodyContent().getString();
        }
        
        try {
            out.println(message);
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        return this.EVAL_PAGE;
    }
}
------------------------------------------------------------------------------------------
[WEB-INF/tld/mytags.tld]
 
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
            PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" 
            "http://java.sun.com/j2ee/dtds/web-jsptaglib_1_1.dtd">
 <taglib>
    <tlibversion>1.0</tlibversion>
    <jspversion>1.1</jspversion>
    <shortname>UmaUtils</shortname>
    <uri>http://www.umaking.com/taglibs/mytags</uri>
    <info></info>

    <tag>
      <name>umaTag</name>
      <tagclass>com.umaking.MyTag</tagclass>
      JSP</bodycontent>
      <attribute>
          <name>var</name>
        <required>false</required>
        <rtexprvalue>true</rtexprvalue>
      </attribute>
      <attribute>
          <name>message</name>
        <required>false</required>
        <rtexprvalue>true</rtexprvalue>
      </attribute>
    </tag>
</taglib>
------------------------------------------------------------------------------------------
[/WEB-INF/web.xml]
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>pp</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
   
    <!-- 추가 함 -->
    <taglib>
       <taglib-uri>
         http://www.umaking.com/taglibs/mytags
       </taglib-uri>
       <taglib-location>
         /WEB-INF/tld/mytags.tld
       </taglib-location>
    </taglib>

</web-app>
------------------------------------------------------------------------------------------
[/test.jsp]
 
<%@ page pageEncoding="euc-kr" %>
<%@ taglib uri="http://www.umaking.com/taglibs/mytags" prefix="m" %>
<m:umaTag var="test" message="aaa">
테스트 입니다.
</m:umaTag>

'코드' 카테고리의 다른 글

3DES  (0) 2009.09.03
TrayIcon - TaskbarCreated 신호시....  (0) 2009.07.12
prototype 1.6에서 SelectBOX 생성  (0) 2009.03.07
ServletFilter를 통한 URI 재구성 (Blog처럼)  (1) 2009.02.22
printStackTrace  (0) 2008.09.02