3

我有以下情况:

  • taglib.jar: 打包为 JAR 文件的自定义 JSP 标签库。TLD 文件是/META-INF/taglib.tld.
  • webapp.war:带有 JSP 文件的 Web 应用程序,这些文件使用taglib.jar.
  • app.ear:一个 J2EE 应用程序,其中包含webapp.war和其他 WAR 文件。

我想打包一个taglib.jarinapp.ear以便 JSP 文件webapp.war和其他 WAR 文件都可以使用它的标签。我在 JSP 文件中尝试了以下指令,但没有成功:

  • <%@ taglib uri="/taglib.jar" prefix="xxx" %>
  • <%@ taglib uri="taglib.jar" prefix="xxx" %>

是否可以将 JSP taglib JAR 文件打包到 EAR 文件中?如果是,我应该uri在指令的属性中指定哪个值taglib

注意:我当然可以打包每个 WAR 文件taglib.jar/WEB-INF/lib但这正是我试图避免的。

上下文:我在 JBoss 4.2.3 上部署 EAR 文件。

编辑:恐怕这是不可能的,特别是因为我从Maven WAR 插件文档中阅读了关于WAR的部分:

有时必须将 JAR 列表打包到 WAR (...) 中才能使其正常工作,就像使用标记库一样。

4

3 回答 3

1

jar taglib 只能出现在 WEB-INF/lib 下。容器可能会提供一些自定义方式来配置常用的 tld。要在 JBOSS 中实现同样的效果,就是这样

JspServlet 支持一个新的engineOptionsClass,它允许替换选项实现。默认设置现在使用 jboss 特定的 JspServletOptions:

engineOptionsClass org.jboss.web.tomcat.tc5.jasper.JspServletOptions

它又使用自定义标签库描述符缓存 org.jboss.web.tomcat.tc5.jasper.TagLibCache 从 tomcat sar conf/tlds 中的 jar 加载标签库。

于 2011-05-19T10:20:23.333 回答
0

这是一个老话题,但我想分享我的解决方案:在 Eclipse 上用鼠标右键单击项目,使用“导出生成的类文件和资源”选项导出为 jar 并为其命名(ex.customtags.罐)。用 7Zip 打开打包后的 .jar,我们应该会看到类似下面的结构:

  • com
  • 元信息
  • 网络应用
  • .classpath

将所有标记库复制到.jar 文件根目录下的 META-INF 文件夹(不是任何其他位置)。

更改此 jar 后,将其添加到要使用 taglib 的项目的 webapp\WEB-INF\lib 文件夹中。在 jsp 文件中放入以下内容:

这应该工作得很好!

问候,女士

于 2015-03-31T14:34:27.753 回答
0

这是不可能的。我能做的最好的就是打包taglib.jar在 EAR 文件中,并在/WEB-INF每个 WAR 文件的目录中复制 TLD 文件。

于 2011-05-31T20:38:37.843 回答