在JAR中嵌入标记文件

时间:2012-03-05 20:14:07

标签: jsp-tags tagfile

有可能这样做吗?我在这里要完成的是创建一个带有可自定义屏幕的可扩展Struts 2插件,以避免类似项目中的代码重复。

2 个答案:

答案 0 :(得分:4)

是的,这是可能的,但它与Struts 2无关: http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPTags6.html#wp90207(在“打包的标记文件”下)。

以下是一个示例:http://www.examulator.com/moodle/mod/resource/view.php?id=473

答案 1 :(得分:0)

在URL发生更改的情况下,从this来源(取自先前的答案)报价步骤。 (我在互联网上找到的最简单的解决方案)

  

当包装在罐子(Java存档)中时,标记文件需要 tld

menu.tld 放置在META-INF目录中。

<?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>menutagfile</shortname>

    <uri>www.examulator.com/menutagfile</uri>
    <tag-file>
        <name>menu</name>
        <path>/META-INF/tags/menu.tag</path>
    </tag-file>
</taglib>

menu.tag 放在META-INF\tags目录中。

<%@ tag body-content="tagdependent" %>
<%@ attribute name="menutext" rtexprvalue="true"%>

<h1>This is my tag file</h1>
<jsp:doBody/>

将它们打包到JAR中的命令(maven时自动打包)

Jar cvf menutagfile.jar .\META-INF\*.*

在父项目中的用法

<%@ taglib prefix="mytagfile" uri="www.examulator.com/menutagfile" %>
<html>
<head>
<title>Demonstration of Tag Files</title>
</head>
<body>
<h1> What is going down? </h1>
<mytagfile:menu/>
</body>
</html>

注意:如果您的项目中没有META-INF文件夹,请在src/main/resources内创建一个文件夹。