重用自定义JSP标记

时间:2014-11-28 15:24:08

标签: spring tomcat split jsp-tags code-reuse

我想将Spring / JSP / Maven / Tomcat webapp项目拆分为几个不同的项目。因此,它们中的每一个都将充当独立的Web应用程序。 现在,我想在所有项目中使用相同的自定义JSP标记,但我不想复制WEB-INF / tag文件夹everywhare。 如何在共享项目中定义它并在所有依赖项目中重用它?

2 个答案:

答案 0 :(得分:1)

我是通过将tld放在公共项目的src / main / java / META-INF文件夹中来完成的。

e.g。 common.tld

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

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" 
  "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

<taglib>
    <tlibversion>1.0</tlibversion>
    <jspversion>1.1</jspversion>
    <shortname>Custom common Tag Library</shortname>
    <uri>http://www.mysite.be/tags/common</uri>
    ...

然后是项目中的JSP(包括共享项目):

<%@ taglib prefix="common" uri="http://www.mysite.be/tags/common" %>

免责声明:自从我这么做以来很久以前我希望我没有忘记任何事情,也不确定这是否仍然是最好的选择。

答案 1 :(得分:0)

继上一个答案并假设您正在使用Maven之后,您的Common taglib项目应如下所示:

-src
--main
---resources
-----META-INF
-----taglib.tld
-----tags
-------tag1.tag
-------tag2.tag

taglib.tld的内容如下所示:

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
    version="2.0">

    <description>JSP 2.0 Tag File Library for Spring MVC and Bootstrap
    </description>
    <tlib-version>1.0</tlib-version>
    <short-name>my-taglib-name</short-name>
    <uri>http://my.taglib.namespace</uri>
    <tag-file>
        <name>tag1</name>
        <path>/META-INF/tags/tag1.tag</path>
    </tag-file>
    <tag-file>
        <name>tag2</name>
        <path>/META-INF/tags/tag2.tag</path>
    </tag-file>
</taglib>

然后你可以正常方式引用依赖项目中的taglib。

<%@ taglib uri="http://my.taglib.namespace" prefix="t"%>

有关进一步指导,请参阅文档:

http://docs.oracle.com/javaee/5/tutorial/doc/bnamu.html#bnana