我正在使用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的战争中尝试了相同的结构,并且能够找到标签。所以我想知道是否有任何方法可以使用类似的解决方案与网络片段方法。
答案 0 :(得分:2)
您在网络片段项目中不需要WEB-INF
。请改用此结构:
网络片段项目:
META-INF/
-- resources/
-- tags/
-- mytag.tag
-- mypage.jsp
-- web-fragment.xml
resources
目录中的所有内容现在都可用于引用项目,就好像它们是deployed inside WEB-INF
一样。
网络项目:
WEB-INF/
-- tags/
-- othertag.tag
-- (mytag.tag)
-- otherpage.jsp
-- (mypage.jsp)
所以要从网络项目中引用mytag.tag
:
<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>
...
<my:mytag ... />
至于你所看到的错误,我不知道你尝试了什么,但这是你如何做的:
对于.tag
,您必须指定 tagdir 并将其设置为标记的文件夹:
<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>
对于.tld
,您必须指定 uri 并将其设置为tld's URI:
<%@ taglib prefix="mytld" uri="http://example.com/tld/my" %>