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