Как мне найти код, стоящий за taglib JSP?

Я работаю над Tomcat5 (и перехожу на tomcat6). Мы используем taglibs JSP, потому что именно так нам был доставлен сайт. Поставщик создает свои теги, что было очень полезно, но я использовал их как черный ящик. Я знаю, что входит, я знаю, что выходит, я знаю, какую строку поместить в заголовок каждой страницы JSP.

Если у вас есть тег, например <irv:>, как в

<irv:validate name="status" datatype="API.STAT" datasource="local">*

и вы знаете, что строка тега выглядит так

<%@ taglib uri="/WEB-INF/tlds/inv.tld" prefix="irv" %>

Как вы находите Java-код, стоящий за всем этим?

Вся помощь приветствуется.


person Charles Barouch    schedule 27.04.2011    source источник
comment
Пожалуйста, не путайте сторонние taglibs с JSTL. JSTL — это стандартная taglib JSP: stackoverflow.com/tags/jstl/info. Я отредактировал вопрос, заменив JSTL тегом JSP.   -  person BalusC    schedule 27.04.2011


Ответы (1)


Прочитайте файл /WEB-INF/tlds/inv.tld в текстовом редакторе. Он содержит определения тегов, а для <irv:validate> он будет содержать что-то вроде

<tag>
    <name>validate</name>
    <tag-class>com.example.ValidateTag</tag-class>
    ...
</tag>

<tag-class> дает вам полное квалифицированное имя класса резервного Java-кода тега.

Смотрите также:

person BalusC    schedule 27.04.2011
comment
BalusC, я знал ком.пример... часть. Ссылка, которую вы включили, содержит часть, которую я на самом деле не просмотрел. Эта строка говорит мне, что мне нужно: * Обработчики тегов могут быть доступны для веб-приложения двумя основными способами. Классы, реализующие обработчики тегов, могут храниться в распакованном виде в подкаталоге /WEB-INF/classes/ веб-приложения. В качестве альтернативы, если библиотека распространяется в виде JAR, она хранится в каталоге /WEB-INF/lib/ веб-приложения.*‹br/› Большое спасибо - person Charles Barouch; 27.04.2011
comment
Значит, вы не используете IDE, в которой можно просто искать исходный файл com.example.ValidateTag? Например. Ctrl+Shift+T или Ctrl+Click имя класса в Eclipse. Во всяком случае, что касается вашей путаницы, в первом случае она присутствует в /WEB-INF/classes/com/example/ValidateTag.class. Во втором случае класс присутствует в каком-то файле JAR в /WEB-INF/lib. Он просто сообщает вам расположение файла .class файла com.example.ValidateTag. Но вас скорее должен интересовать файл .java, иначе вам нужно самостоятельно декомпилировать файл .class. - person BalusC; 27.04.2011
comment
Нет, я использую Eclipse только при разработке Android, и только потому, что в этом случае затраты времени на его неиспользование слишком высоки. Я никогда не относился к Eclipse, хотя кажется, что миру это нравится. Я никогда не обнаруживаю, что инструмент находится там, где я его ожидаю, и я просто не могу наклонить голову так, чтобы все выстроилось и имело смысл. Я мог бы попросить свою компанию купить jBuilder, так как мне проще использовать IDE CodeGear.‹br/›Итак, как мне найти файл .java? - person Charles Barouch; 27.04.2011
comment
Ха-ха, время придет :) В любом случае, вы нашли файл? Разве веб-приложение не поставлялось с исходным кодом? Мне это показалось бы странным, как бы вы вообще поддерживали код. - person BalusC; 27.04.2011
comment
У нас хорошие отношения с поставщиком, но он слишком хорошо защищает своих разработчиков от своих клиентов, поэтому я общаюсь с очень хорошими людьми, которые часто более осведомлены, чем я, но не так осведомлены, как мне нужно. Так вот, мне просто не хватает навыков отслеживания. Итак, как мне найти файлы .java? - person Charles Barouch; 27.04.2011
comment
Пакет представляет собой структуру папок. Имя класса — это имя файла. Итак, вам нужно использовать поисковую систему файловой системы вашей ОС (например, F3 в проводнике Windows) для поиска файла с именем ValidateTag.java в некоторых com/example/. Если нет, попробуйте вместо этого ValidateTag.class, но он уже должен присутствовать в веб-приложении как /WEB-INF/classes/com/example/ValidateTag.class или в JAR в /WEB-INF/lib. Вам нужно только декомпилировать его, чтобы получить настоящий код Java. JD полезен. - person BalusC; 27.04.2011