3

真的很简单,不是我以前做过的事情,但我一定错过了一些东西。

我有一个这样的工作 jstl 标签 - 缩写如下:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@ attribute name="path" type="java.lang.Object" rtexprvalue="true" required="true"%>
<%@ attribute name="l10nprefix" type="java.lang.String" required="false"%>
<%@ attribute name="cssClass" type="java.lang.String" required="false"%>
...a bunch of code...
<form:select path="${path}" cssClass="${cssClass}">
...some more of code...
</form:select>

现在我想放在一个共享位置(想一个罐子),以便我可以从各种项目中引用它。所以我可以像任何其他 taglib 一样引用它。

我可以看到您将如何做到这一点,因为您正在编写一个扩展 javax.servlet.jsp.tagext.SimpleTagSupport 的 java 类(我记得在某处看到另一个类)。很简单,可以在正确的位置创建一个.tld文件。

但我看不到重用 jstl 标记代码的标准方法。有吗?

我在某处读到了关于 tomcat 将 jstl 标记代码编译为类文件的信息。大概我可以从.tld文件中引用生成的类。但是在构建中找到并封装它似乎有点笨拙。最好用java重新编写所有代码并完成,但是下次会发生什么,当它是更复杂的代码时。

4

1 回答 1

0

谷歌搜索“jar 中的标记文件”会导致这个Oracle 文档,其中说:

标签文件可以打包在 /META-INF/tags/ 目录中的一个 JAR 文件中,该 JAR 文件安装在 Web 应用程序的 /WEB-INF/lib/ 目录中。放置在这里的标签通常是可重用标签库的一部分,可以在任何 Web 应用程序中轻松使用。

捆绑在 JAR 中的标记文件需要标记库描述符。Web 容器会忽略出现在 JAR 中但未在 TLD 中定义的标记文件。

请注意,您的标记是自定义 JSP 标记,而不是JSTL 标记。JSTL 是 JSP 标准标记库,您的自定义标记不属于该标准库。

于 2012-10-10T18:59:58.550 回答