解答例 - 実習課題4 - 6.カスタムタグの基本2
(実習課題4)
4節のサンプルタグ(AttributeExistタグ)を改良しなさい。
- オブジェクトが見つかった場合、どこのスコープから見つかったのか表示するようにする事。
解答例
/* * JspChapter6_4Tag.java TECHSCORE Java JSP6実習課題4 * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.jsp.chapter6.exercise4; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.Tag; public class JspChapter6_4Tag implements Tag { private PageContext pageContext = null; private Tag parentTag = null; private String name = ""; public void setName(String name) { this.name = name; } public void setPageContext(PageContext pageContext) { this.pageContext = pageContext; } public void setParent(Tag parentTag) { this.parentTag = parentTag; } public Tag getParent() { return parentTag; } public int doStartTag() throws JspException { return SKIP_BODY; } public int doEndTag() throws JspException { JspWriter writer = pageContext.getOut(); try { if (pageContext.findAttribute(name) == null) { writer.println(name + " attribute not found."); } else { String scope = null; if (pageContext.getAttribute(name, PageContext.APPLICATION_SCOPE) != null) { scope = "application"; } else if (pageContext.getAttribute(name, PageContext.SESSION_SCOPE) != null) { scope = "session"; } else if (pageContext.getAttribute(name, PageContext.PAGE_SCOPE) != null) { scope = "page"; } else if (pageContext.getAttribute(name, PageContext.REQUEST_SCOPE) != null) { scope = "request"; } writer.println(name + " attribute found by " + scope + " scope."); } } catch (IOException e) { e.printStackTrace(); } return EVAL_PAGE; } public void release() {} }
<!-- taglib.jsp --> <!-- TECHSCORE Java JSP 6章 実習課題4 --> <!-- Copyright (c) 2004 Four-Dimensional Data, Inc. --> <%@page contentType="text/html; charset=Windows-31J" %> <%@taglib uri="http://www.techscore.com/tags/myTag" prefix="myTag" %> <html> <head><title>JSP6章 実習課題4</title></head> <body> <h3>JSP6章 実習課題4</h3> <myTag:findAttribute6_4 name="count"/> </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>findAttribute6_4</name> <tag-class>com.techscore.jsp.chapter6.exercise4.JspChapter6_4Tag</tag-class> <body-content>JSP</body-content> <attribute> <name>name</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>