Как разрешить многим jsp тегам libs использовать один и тот же префикс? - PullRequest
0 голосов
/ 03 февраля 2012

В моем jsp я использовал 4 тега libs. Декларация:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="cms" uri="/WEB-INF/tags/cms/tag.tld"%>

Каждый из них имеет уникальный префикс.

Но я хочу использовать один префикс для всех из них, поэтому я изменяю их на:

<%@ taglib prefix="cms" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="cms" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="cms" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="cms" uri="/WEB-INF/tags/cms/tag.tld"%>

Сообщает об ошибках.

Есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

Каждая директива taglib импортирует теги под дескриптором библиотеки тегов, который называется TLD . ДВУ будет иметь набор тегов, идентифицированных по имени тега . Имя тега здесь не является универсально уникальным. Два TLD могут иметь теги с одинаковыми именами . Вот почему у TLD есть пространство имен, которое является ничем иным, как URI TLD (http://java.sun.com/jsp/jstl/core,http://java.sun.com/jsp/jstl/functions, ...).

Таким образом, при использовании любого тега необходимо четко указать, с какого TLD должен быть загружен тег . А так как трудно и непонятно давать URL перед каждым тегом, мы даем псевдоним URI с помощью префикса в директиве lib тега .

Так вот почему вы не можете иметь одинаковый префикс для нескольких TLD .

1 голос
/ 03 февраля 2012

Вы не можете иметь одинаковый префикс тега для двух разных библиотек тегов в одном и том же JSP. Префикс тега будет указывать JSP, какая библиотека тегов будет использоваться, а оттуда - какой файл класса будет использоваться. для тега.

У каждого taglib должен быть свой префикс тега.

...