2013-08-09 5 views
3

Я использую функцию веб-фрагмента для поддержки своих JSP и тегов в банке, и используя этот подход, мои страницы JSP не могут найти tagdir и вызывают «Значение атрибут tagdir для этой библиотеки тегов недействителен. "Недопустимый атрибут tagdir при использовании веб-фрагмента

Вот эта структура в моей банке.

META-INF
- ресурсы
        - WEB-INF
                - теги
                        - mytag.tag
        - mypage.jsp
- веб-fragment.xml

В mypage.jsp, указываю TagLib следующим образом:

И Я получил эти ошибки:
mypage.jsp: 7: 4: директива taglib должна указывать либо атрибут «uri», либо «tagdir».

mypage.jsp: 7: 33: Значение атрибута tagdir для этой библиотеки тегов недействительно.

Похоже, что при таком подходе он не может найти tagdir. Я пробовал ту же структуру в моей войне с web.xml, и он смог найти теги. Поэтому я задаюсь вопросом, можно ли каким-либо образом использовать аналогичное решение с использованием подхода веб-фрагмента.

ответ

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" %>