2015-02-06 43 views
0

背景:創建可再發行組件封裝TAGFILE

我應該共享一個包裝標籤文件的幾個項目(請參見Packaged tag files)。在一個獨立的項目中,我創建了這個打包的標記文件,它實際上只是一個JAR文件(參考下面的'JAR文件結構'一節),我可以重新分配給我的所有項目。我正在使用Eclipse IDE。

問題:

根據甲骨文的文檔,我應該能夠把我的.TLD成JAR文件的/ META-INF /目錄。但是,如果.tld也在項目的/ WEB-INF /目錄中,並且我使用<%@taglib prefix="t" uri="/WEB-INF/tagfiles.tld" %>來引用它,那麼Eclipse僅會成功驗證我的代碼。如何在不將.tld放入/ WEB-INF /目錄的情況下在Eclipse中引用我的標記?這是Oracle文檔,說明它可以在JAR的META-INF:

標籤庫描述符文件名必須有擴展名.TLD和 必須的了/ WEB-INF /目錄或子目錄打包WAR 文件或打包在JAR中的標記庫 的/ META-INF /目錄或子目錄中。如果標籤是作爲標籤文件實現的,並且打包在/ WEB-INF/tags /或子目錄中,則由Web容器自動生成 ,但如果您希望 希望,則可以提供一個TLD。

我不希望將.tld放入WEB-INF的原因是,如果包含在JAR中,分發更容易。然後,我不必每次更改時都將其複製到所有依賴項目中。

我的JAR文件的結構:

我創建了一個名爲wrapper.tag JSP標記文件。我創建了另一個名爲tagfiles.tld的文件,其中tag-files元素具有子元素<path>/META-INF/tags/wrapper.tag</path>。我創建了一個可以JAR這些的ant任務。它使用以下內容創建JAR:META-INF,META-INF/tags,META-INF/tld,META-INF/MANIFEST.MF,tags/wrapper.tag和tld/tagfiles.tld。

回答

0

得到它的工作。我升級到Eclipse Luna(在寫這篇文章時,最新版本)。我的主項目在包含標記文件JAR的項目的Java構建路徑上有一個'Projects'參考。 JAR本身的文件結構在上面的文章中有說明。我.TLD文件具有以下內容:

<taglib version="2.0" xmlns="http://java.sun.com/xml/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"> 
    <tlib-version>2.0</tlib-version> 
    <jsp-version>2.0</jsp-version> 
    <short-name>mysname</short-name> 
    <uri>http://anyuri.com/anything</uri> 
    <description> 
    Your description here 
    </description> 
    <tag-file> 
    <description>This is just a test</description> 
    <display-name>wrapper</display-name> 
    <name>wrapper</name> 
    <path>/META-INF/tags/wrapper.tag</path> 
    </tag-file> 
</taglib> 

我也應該注意到,我有一個ANT構建包裝所述標籤JAR文件到Web應用程序的WEB-INF/lib目錄下。這是根據documentation要求:

標記文件可以在/ META-INF /標籤/目錄包裝在安裝在/ WEB-INF/lib目錄/ Web應用程序的目錄中的JAR 文件。 這裏放置的標籤通常是可重複使用的標籤庫的一部分,它可以在任何Web應用程序中輕鬆使用。

相關問題