본문 바로가기

JSP

부모 자식 관계를 갖는 커스텀 액션

ListTag.java (부모 커스텀 액션을 구현) 

package customaction;

 

import java.io.IOException;

 

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.tagext.JspFragment;

import javax.servlet.jsp.tagext.SimpleTagSupport;

 

public class ListTag extends SimpleTagSupport {

 

    @Override

    public void doTag() throws JspException, IOException {

         // TODO Auto-generated method stub

         JspFragment body = getJspBody();

         body.invoke(null);

         return;

    }

   

}

 


 ItemTag.java (부모 커스텀 액션을 구현)


package customaction;

 

import java.io.IOException;

 

import javax.servlet.jsp.JspContext;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspWriter;

import javax.servlet.jsp.tagext.JspFragment;

import javax.servlet.jsp.tagext.JspTag;

import javax.servlet.jsp.tagext.SimpleTagSupport;

 

public class ItemTag extends SimpleTagSupport {

 

    @Override

    public void doTag() throws JspException, IOException {

         // TODO Auto-generated method stub

         JspTag parent = getParent();

         if((parent==null)||!(parent instanceof ListTag))

             throw new JspException("The Parent is not ListTag");

         JspContext context = getJspContext();

         JspWriter out = context.getOut();

         JspFragment body = getJspBody();

         out.print("-");

         body.invoke(null);

         out.println("<br />");

         return;

    }

   

}

 

  customaction.tld 


<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

    version="2.0">

   

    <tlib-version>1.0</tlib-version>

    <short-name>tool</short-name>

         

     <tag>

         <name>list</name>

         <tag-class>customaction.ListTag</tag-class>

         <body-content>scriptless</body-content>

     </tag>

     <tag>

         <name>item</name>

         <tag-class>customaction.ItemTag</tag-class>

         <body-content>scriptless</body-content>

     </tag>

    

 

</taglib>

   

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

   

<%@taglib prefix="tool" uri="/taglibs/customaction.tld" %>

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

    <h3>오늘의 메뉴</h3>

    <tool:list>

         <tool:item>오렌지 쥬스</tool:item>

         <tool:item>키위 스무디</tool:item>

         <tool:item>딸기 아이스크림</tool:item>

    </tool:list>

</body>

</html>