关于自定义标签 为什么如果在tld文件中不配置uri,只在web.xml中配置taglib-uri后在JSP中引用无效呢?
关于自定义标签 为什么如果在tld文件中不配置uri,只在web.xml中配置taglib-uri后在JSP中引用无效呢?
如果在tld文件中配置了uri,那直接在JSP中就可以正常引用了,那web.xml中配置taglib-uri还有什么用呢?
第一, 我不想在tld文件中配置uri
第二, 我不想在JSP中直接引用tld文件的位置,
第三, 我只是想引用web.xml中配置的taglib-uri。
下面是web.xml tld jsp的配置和引用,请高手指点。
1)
HelloTaglib.tld (这里我没配url,如果这里加了<uri>/mytablib</uri>则web.xml中即使不配置tablib也可以在JSP中引用该uri并正常)
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>Custom Tag Library</description>
<tlib-version>1.0</tlib-version>
<short-name>mytablib</short-name>
<tag>
<name>hellotab</name>
<tag-class>com.base.tag.HelloTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
2)
Web.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<jsp-config>
<taglib>
<taglib-uri>/mytablibURI</taglib-uri>
<taglib-location>/WEB-INF/tlds/HelloTaglib.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
3)
JSP
<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib uri="/mytablibURI" prefix="my" %>
<html>
<head><title><my:hellotab/></title></head>
<body><my:hellotab/></body>
</html>
运行JSP后报以下错误: 提示找不到 /mytablibURI
org.apache.jasper.JasperException: JSP ファイル "/mytablibURI" が見つかりません
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:51)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:116)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:160)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:431)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:494)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1444)
org.apache.jasper.compiler.Parser.parse(Parser.java:138)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:216)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:154)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:315)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.