- PR -

カスタムタグについて

1
投稿者投稿内容
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2005-05-24 16:30
お世話になっています。
カスタムタグを使用して開発を行おうとしているのですが、
JSP側でHogeForm.javaを生成し、tldファイルにtypeを
mypackage.hoge.HogeFormと指定し、TagSupportを継承した
TestTag.javaクラスにて渡したいのですが、独自のクラスを
指定する事はできないのでしょうか?

jsp
<%@ taglib uri="testtaglib" prefix="test" %>
<test:CommonOutput type="java.lang.Object" attr="<%= formHead %>" />
※ HogeFormクラスのインスタンス

tld
<tag>
<name>CommonOutput</name>
<tag-class>mypackage.TestTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>attr</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>mypackage.hoge.HogeForm</type>
</attribute>
</tag>

HogeForm.java内ではtype setterをString、attrのsetterを
HogeFormとし設定しています。

環境
eclipse3.0
JDK1.4.1_03
Tomcat 5.0

例外

org.apache.jasper.JasperException: /jsp/View02.jsp(57,0) TLDによると、タグ CommonOutput の属性 type は無効です
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:238)
org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:975)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:696)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Validator.validate(Validator.java:1475)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:214)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:324)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:239)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:499)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:268)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:157)



[ メッセージ編集済み 編集者: n.w 編集日時 2005-05-24 16:31 ]

[ メッセージ編集済み 編集者: n.w 編集日時 2005-05-24 16:33 ]
Santa
会議室デビュー日: 2003/05/28
投稿数: 8
投稿日時: 2005-05-24 18:45
type という 属性(attribute)がTLD に定義されてないというだけじゃないでしょうか?
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2005-05-26 17:00
遅くなってしまい申し訳ありません。
>type という 属性(attribute)がTLD に定義されてないというだけじゃないでしょうか?
あんですが、投稿する際に記述もれをしてしまってました。

実際は記述してあります。失礼いたしました

1

スキルアップ/キャリアアップ(JOB@IT)