簡體   English   中英

Eclipse在jar文件中找不到TLD

[英]Eclipse cannot find tld inside jar file

我有一個包含一些標記文件的jar文件。

我的*.tag文件位於/META-INF/tags/文件夾(jar)中

我在/META-INF/文件夾(jar)中也有一個mytags.tld

打包所有war項目(在WEB-INF/lib文件夾中帶有mytags.jar )之后,它在JBoss中可以正常工作。 但是Eclipse仍然無法識別標簽,並得到錯誤消息: Can not find the tag library descriptor for "http://www.mycompany.com"


有沒有辦法讓Eclipse識別我的標簽?


遵循來源:

block.tag

<%@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中一切正常。 只有日食指責錯誤。

謝謝

現有的錯誤報告https://bugs.eclipse.org/bugs/show_bug.cgi?id=330405建議更正錯誤消息,使其指向從web.xml檢測到的JSP 1.1版,這是對taglib進行過時解釋的原因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指令可以指定JAR文件而不是TLD文件的名稱和相對於應用程序的物理位置。

自從JSP 1.2引入了映射標記定義並通過任意taglib uri字符串http://docs.oracle.com/cd/B14099_19/web.1012/b14014/taglibs使用以來,上述兩種約定都已退回到一種后備機制。 htm#i1013109

最新的JSP 2.1規范在JSP.7.3.2部分記錄了URI映射:

描述標簽庫的URI通過taglib映射映射到TLD資源路徑,如果映射不包含URI,則使用回退解釋。 taglib映射是從web.xml(在JSP.7.3.3中描述)中的顯式taglib映射構建的,該映射由從Web應用程序中打包的標簽庫推斷出的隱式條目擴展(在JSP.7.3.4中描述),和JSP容器已知的隱式條目。 后備解釋的目標是隨意使用該機制,例如Web應用程序的開發周期。 在這種情況下,URI被解釋為通往TLD的直接路徑(請參見JSP.7.3.6.2節)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM