2015-07-08 3 views
2

При использовании тегов JSTL в файлах .jsp или jsf facelets вы должны объявить те библиотеки тегов, которые хотите использовать.Какую роль играет URI в идентификации библиотек тегов 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 
+0

Вы вроде уже дают ответ самостоятельно (курсив мой). _ "не ** загружает ** любую информацию из URI через Интернет. Но правильный URI должен каким-то образом использоваться для ** идентификации ** правильной библиотеки тегов. _ Именно различие между URL-адресом (L = локатор) и URI (I = Идентификатор) – Kukeltje

+0

Да, но этот URI на самом деле является URL-адресом. Что делает вещи немного вводящими в заблуждение, так это то, что они не располагают библиотеку тегов, а только документацию библиотеки тегов. Мой вопрос состоял в том, как URI используется для поиска библиотеки тегов (на который был дан ответ ниже). Большинство людей говорят, что оно используется только для того, чтобы дать пространству имен однозначное имя, вы также можете назвать его «johnDoe». Это не рут. URI строго связан с именем/идентификатором, который явно указан в библиотеке тегов. – RamsesGE

+0

Нет, у него есть формат, с которым вы привыкли, от URL http://stackoverflow.com/questions/176264/what-is-the-difference-between-a-uri-a-url-and--urn. Здесь нет «размещения/загрузки» ресурса. Это просто «идентификация». Он не может иметь никакого имени, он должен соответствовать определению (см. Вкладку информации о uri). И он используется, чтобы дать что-то однозначное пространство имен. Но нужно только ссылаться на что-то другое (taglib, xsd и т. Д.), Если он используется таким образом. – Kukeltje

ответ

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> 

Кроме того, вы можете определить URI для пользовательских библиотек тегов в web.xml

<taglib> 
    <taglib-uri>http://lelelu.org/mytag-io</taglib-uri> 
    <taglib-location>/WEB-INF/mytags-io.tld</taglib-location> 
</taglib> 
+0

Спасибо за ваш ответ. Еще один вопрос: почему вы иногда находите это в web.xml, иногда в .tld файле? Где я могу найти core.tld? – RamsesGE

+0

Вы можете загрузить исходный код JSTL из maven repo. [link] (http://search.maven.org/#browse|-1002239620) Вы можете использовать определение в web.xml для собственных тегов TagLib. – benliet

Смежные вопросы