2015-02-06 29 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应用程序中轻松使用。

相关问题