2009-05-17 9 views
2

JSPとサーブレットの開発から、私は、bodylessカスタムタグをJSPページに挿入する際にいくつか問題があります。行わどのようにJSPタグ拡張でこの問題を解決するには?

ステップ:

  1. を書き、WEB-INF/classesディレクトリ(TagSupportを拡張)正常CustomTag.javaコンパイル。
  2. 非常に単純な例で、TLDファイルを定義しました。<body-content>には、ボディレスタグの値がemptyです。
  3. JSPページのタグを、/WEB-INF/tlds/site.tldファイルを指すtaglibディレクティブとともに使用しました。
  4. 念頭に置いて、このすべてで

、あなたはTomcatは、このようなエラーを送信している理由の手掛かりを持っています:

CustomTagがタイプにあなたのために事前に

おかげで解決できませんあなたが詳細が必要かどうか質問してください。


ここに私のTLDファイルです:

<?xml version="1.0" encoding="ISO-8859-1"?> 

< ! 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>customlib</short-name> 
    <description>Custom library.</description> 
    <tag> 
     <name>header</name> 
     <tag-class>HeaderTag</tag-class> 
     <body-content>empty</body-content> 
     <description>...</description> 
    </tag> 
</taglib> 

JSPファイル:

<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.sql.*" errorPage="" %> 
<%@ taglib uri="/WEB-INF/tlds/customlib.tld" prefix="clib" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>title</title> 
</head> 

<body> 
    <clib:header /> 
</body> 
</html> 

HeaderTagクラス:

は、
+0

タグクラスをパッケージに入れる必要があります。 – kdgregory

答えて

3

あなたは再構築して再展開しましたが、正しいですか?その場合は、<タグクラス>ディレクティブをTLDファイルに残しておかなければなりません。

<tag> 
    <name>cookieIterator</name> 
    <tag-class>util.infoTemplates.CookieIterator</tag-class> 
    <body-content>JSP</body-content> 
</tag> 

これが原因でない場合は、TLDファイルとサンプルJSPを投稿してください。


編集:すべてのタグクラスにはパッケージが必要です。 JSP 2.0仕様(セクション11.2 JSP)あたり:JSP 2.0のよう

、名前(別名 デフォルト)パッケージから任意のクラスを参照することは違法です。

+0

残念ながら、これはそのような問題ではありません。アプリケーションが再デプロイされ、クラスが "再コンパイル"され、TLDファイルが有効であるようです。 – elbaid

+0

編集では、それは問題であり、パッケージはなく、今は動作しています。ありがとうございました。 – elbaid

関連する問題