実行画面 †
<%@ page contentType="text/html;charset=Windows-31J" %>
<%@ taglib uri="/WEB-INF/tag.tld" prefix="myTag" %>
<html>
<head>
<title>Tag Parent Example</title>
</head>
<body>
BEFORE TAG
<hr/>
<myTag:grandFather>
<myTag:father>
<myTag:child>
</myTag:child>
</myTag:father>
</myTag:grandFather>
<hr/>
AFTER TAG
</body>
</html>
- GrandFatherTag?.java
package com.snail.sjcwc;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
public class GrandFatherTag extends TagSupport {
public int doStartTag() throws JspException {
return EVAL_BODY_INCLUDE;
}
}
- FatherTag?.java
package com.snail.sjcwc;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
public class FatherTag extends TagSupport {
public int doStartTag() throws JspException {
return EVAL_BODY_INCLUDE;
}
}
- ChildTag?.java
package com.snail.sjcwc;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;
public class ChildTag extends TagSupport {
private static final long serialVersionUID = -6986462986227245430L;
public int doStartTag() throws JspException {
try {
pageContext.getOut().print(
"親タグは、" + getParent().getClass().getName() + " です<br/>");
Class klass = GrandFatherTag.class;
Tag t = findAncestorWithClass(this, klass);
if (t == null) {
pageContext.getOut()
.print(klass.getName() + " には囲まれていません<br/>");
} else {
pageContext.getOut().print(klass.getName() + " には囲まれています<br/>");
}
Class klass2 = TagBodyExam.class;
Tag t2 = findAncestorWithClass(this, klass2);
if (t2 == null) {
pageContext.getOut().print(
klass2.getName() + " には囲まれていません<br/>");
} else {
pageContext.getOut()
.print(klass2.getName() + " には囲まれています<br/>");
}
} catch (IOException e) {
e.printStackTrace();
return SKIP_BODY;
}
return EVAL_BODY_INCLUDE;
}
}
Java SJC-WC JSP#tagParent