哪个角色在识别JSTL标记库时扮演URI?

时间:2015-07-08 11:14:24

标签: jsp jsf jstl uri

在.jsp文件或jsf facelets中使用JSTL标记时,必须声明要使用的标记库。

示例(jsp):

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

示例(jsf):

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:c="http://java.sun.com/jsp/jstl/core">

总是说URI除了使名称空间明确并且提供额外的文档之外不起任何作用。我不相信这个。我知道facelet / .jsp不会通过互联网从URI加载任何信息。但必须以某种方式使用正确的URI来识别正确的标记库。

有人可以解释一下这是怎么做的吗?

我检查过:如果你只更改了URI中的一个字母,你会得到一个例外:

org.apache.jasper.JasperException: /todolist.jsp(10,61) PWC6188: 
The absolute uri: http://java.sux.com/jsp/jstl/core cannot be resolved
in either web.xml or the jar files deployed with this application

1 个答案:

答案 0 :(得分:0)

URI在taglib defintion文件中定义。如果没有正确的URI,则无法解析引用。它就像一个名字或钥匙。

例如core.tld

<description>JSTL 1.2 core library</description>
  <display-name>JSTL core</display-name>
  <tlib-version>1.2</tlib-version>
  <short-name>c</short-name>
  <uri>http://java.sun.com/jsp/jstl/core</uri>

您还可以在web.xml

中定义自定义标记库的URI
<taglib>
  <taglib-uri>http://lelelu.org/mytag-io</taglib-uri>
  <taglib-location>/WEB-INF/mytags-io.tld</taglib-location>
</taglib>