2

いくつかのタグ ファイルを含む jar ファイルがあります。

私の*.tagファイルは/META-INF/tags/フォルダ(jar)の中にあります

mytags.tld内部/META-INF/フォルダー(jar)もあります

warすべてのプロジェクトを (フォルダーmytags.jar内で)パックした後WEB-INF/lib、JBoss で正常に動作します。しかし、Eclipseはまだタグを認識できず、エラーが発生しますCan not find the tag library descriptor for "http://www.mycompany.com"


Eclipse が私のタグを認識する方法はありますか?


ソースに従ってください:

ブロックタグ

<%@tag description="Item do block" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@attribute name="id" required="true" %>
<%@attribute name="label" required="true" %>
<%@attribute name="description" required="false" %>
<%@attribute name="icon" required="false" %>

<div id="${id}" class="block">
    <div class="block-box ${icon}">
        <div class="label">
            <span>${label}</span>
        </div>
        <div class="description">
            ${description}
            <jsp:doBody></jsp:doBody>
        </div>
    </div>
</div>


mytags.tld

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">

    <description>My Tags</description>
    <display-name>MyTags</display-name>
    <tlib-version>1.0</tlib-version>
    <short-name>mytags</short-name>
    <uri>http://www.mycompany.com</uri>

    <tag-file>
        <name>block</name>
        <path>/META-INF/tags/block.tag</path>
    </tag-file>
</taglib>


some.jsp

<%@page contentType="text/html; charset=ISO-8859-1" pageEncoding="UTF-8" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://www.mycompany.com" prefix="mytags" %> <-- ECLIPSE MARKS ERROR HERE
<!DOCTYPE html>
<html>

    <head>
        <title>Test</title>
    </head>
    <body>
        <mytags:block id="users" label="Users" icon="user">
            <!-- some content -->
        </mytags:block>
    </body>
</html>

しかし、JBoss ではすべて正常に動作します。日食だけがエラーを非難します。

ありがとう

4

1 に答える 1

1

既存のバグ レポートhttps://bugs.eclipse.org/bugs/show_bug.cgi?id=330405は、taglib の古い解釈の理由として、web.xml から検出された JSP バージョン 1.1 を指すようにエラー メッセージを修正することを提案しています。 URI。

これは、JSP タグ ライブラリ ドキュメントhttp://docs.oracle.com/cd/B14099_19/web.1012/b14014/taglibs.htm#i1014427で確認されています。

JSP 1.1 仕様で最初に定義されたように、JSP ページの taglib ディレクティブは、次の例のように、WAR ファイル構造内で、特定のタグ ライブラリを定義する TLD ファイルの名前と物理的な場所を完全に指定できます。

<%@ taglib uri="/WEB-INF/oracustomtags/tlds/mytld.tld" prefix="oracust" %>

[..] あるいは、JSP 1.1 仕様以降に定義されているように、taglib ディレクティブは、TLD ファイルの代わりに JAR ファイルの名前とアプリケーション相対の物理的な場所を指定できます。

上記の 2 つの規則はいずれも、任意の taglib uri 文字列 ( http://docs.oracle.com/cd/B14099_19/web.1012/b14014/taglibs) を使用してマッピング タグ定義と使用を導入した JSP 1.2 以降、フォールバック メカニズムに廃止されました。 htm#i1013109 .

最近の JSP 2.1 仕様では、セクション JSP.7.3.2 で URI マッピングが文書化されています。

タグ ライブラリを記述する URI は、taglib マップと、マップに URI が含まれていない場合に使用されるフォールバック解釈を介して TLD リソース パスにマップされます。taglib マップは、web.xml の明示的な taglib マップ (セクション JSP.7.3.3 で説明) から構築され、Web アプリケーション (セクション JSP.7.3.4 で説明) のパッケージ化されたタグ ライブラリから推定される暗黙的なエントリで拡張されます。 JSP コンテナに認識されている暗黙的なエントリ。フォールバックの解釈は、Web アプリケーションの開発サイクルのように、メカニズムをカジュアルに使用することを目的としています。その場合、URI は TLD への直接パスとして解釈されます (セクション JSP.7.3.6.2 を参照)。

于 2016-03-30T23:37:40.507 に答える