【问题标题】:Reusing custom JSP tags重用自定义 JSP 标记
【发布时间】:2015-01-27 07:00:27
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我通过将 tld 放在公共项目的 src/main/java/META-INF 文件夹中来做到这一点。

    例如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" %>
    

    免责声明:自从我这样做以来已经很久了,所以我希望我没有忘记任何事情,并且不确定这是否(仍然)是最好的选择。

    【讨论】:

      【解决方案2】:

      在上一个答案的基础上,假设您使用的是 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

      【讨论】:

        猜你喜欢
        • 2011-04-16
        • 1970-01-01
        • 1970-01-01
        • 2011-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多