3

我正在使用 web-fragment 功能在 jar 中维护我的 JSP 和标签,并且使用这种方法,我的 JSP 页面无法找到 tagdir,并导致“此标签库的 tagdir 属性值无效”。

这是我罐子里的结构。

META-INF
-- 资源
    -- WEB-INF
        -- 标签
            -- mytag.tag
    -- mypage.jsp
-- web-fragment.xml

在 mypage.jsp 中,我指定 taglib 如下:

我得到了这些错误:
mypage.jsp:7:4: taglib 指令必须指定“uri”或“tagdir”属性。

mypage.jsp:7:33:此标签库的 tagdir 属性值无效。

似乎在这种方法下,它找不到 tagdir。我在与 web.xml 的战争中尝试了相同的结构,它能够找到标签。所以我想知道是否有任何方法可以将类似的解决方案与 web-fragment 方法一起使用。

4

1 回答 1

2

您不需要WEB-INF在 web-fragment 项目中。请改用此结构:

网页片段项目:

META-INF/
-- resources/
   -- tags/
      -- mytag.tag
   -- mypage.jsp
-- web-fragment.xml

目录中的所有resources内容现在都可用于引用项目,就好像它们部署在WEB-INF.

网络项目:

WEB-INF/
-- tags/
   -- othertag.tag
   -- (mytag.tag)
-- otherpage.jsp
-- (mypage.jsp)

所以mytag.tag要从网络项目中引用:

<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>
...
<my:mytag ... />

至于您看到的错误,我不知道您尝试了什么,但您可以这样做:

对于 a.tag您必须指定tagdir并将其设置为标签的文件夹:

<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>

对于 a.tld您必须指定uri并将其设置为tld 的 URI

<%@ taglib prefix="mytld" uri="http://example.com/tld/my" %>
于 2013-09-14T18:07:28.647 回答