目次へ

解答例 - 実習課題3 - 7.繰り返し機能を持つカスタムタグ

(実習課題3)

以下のサンプルカスタムタグを実装し、それを使用したJSPページを作成しなさい。

  • 「array」属性にはスクリプトでオブジェクトの配列を指定する。
  • 指定されたオブジェクトの配列を、順にリスト表示する。

解答例

/*
 * ArrayTag.java TECHSCORE Java JSP7実習課題3
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */
package com.techscore.jsp.chapter7.exercise3;

import java.io.IOException;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.IterationTag;
import javax.servlet.jsp.tagext.Tag;

public class ArrayTag implements IterationTag {

    private PageContext pageContext = null;
    private Tag parent = null;
    private Iterator iterator = null;

    public void setArray(Object[] objects) {
        List list = new LinkedList();
        for (int i = 0; i < objects.length; i++) {
            list.add(objects[i]);
        }
        iterator = list.iterator();
    }

    public void setPageContext(PageContext pageContext) {
        this.pageContext = pageContext;
    }

    public int doStartTag() throws JspException {
        return (EVAL_BODY_INCLUDE);
    }

    public int doAfterBody() throws JspException {
        JspWriter writer = pageContext.getOut();
        if (iterator.hasNext()) {
            try {
                writer.println(iterator.next() + "<br>");
            } catch (IOException e) {
                e.printStackTrace();
            }
            return (EVAL_BODY_AGAIN);
        } else {
            return (SKIP_BODY);
        }
    }

    public int doEndTag() throws JspException {
        return (EVAL_PAGE);
    }

    public void release() {

    }
    
    public Tag getParent() {
        return parent;
    }

    public void setParent(Tag parent) {
        this.parent = parent;
    }
}
<!-- taglib.jsp -->
<!-- TECHSCORE Java JSP 7章 実習課題3 -->
<!-- Copyright (c) 2004 Four-Dimensional Data, Inc. -->

<%@page contentType="text/html; charset=Windows-31J" import="java.util.*" %>
<%@taglib uri="http://www.techscore.com/tags/myTag" prefix="myTag" %>
<html>
  <head><title>JSP7章 実習課題3</title></head>
  <body>
    <h3>JSP7章 実習課題3</h3>
    <%
      String[] str = new String[5];
      str[0] = "test1";
      str[1] = "test2";
      str[2] = "test3";
      str[3] = "test4";
      str[4] = "test5";
      %>
      <myTag:arrayTag array="<%= str %>">
      </myTag:arrayTag>
    
  </body>
</html>
<?xml version="1.0" ?>
<!DOCTYPE taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>
  <tlib-version>1.0</tlib-version>
  <jsp-version>1.2</jsp-version>
  <short-name>example tags</short-name>

  <tag>
    <name>arrayTag</name>
    <tag-class>com.techscore.jsp.chapter7.exercise3.ArrayTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
      <name>array</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>

</taglib>

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp