Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

Проблема с подключение taglib functions
Список форумов
 ->  Основы веб-программирования на Java


 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
Eyjafjallajokull : 3
Новичок

СообщениеЯнв 26, 2012 13:59 
Ответить с цитатой
Не удаётся подключить taglib:
Код:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

Все остальные стандартные джавовские - core, fmt, xml, sql - работают. В functions по ctrl+space пусто.
В проект включён jstl-1.2.jar. Tomcat 6, спецификация версии 2.5.
Что нужно сделать, чтобы подключить теги из functions?
Заранее благодарю.[/code]

Дополнение от автора.
Проблема решилась. Оказывается, всё было уже подключено, всё работало. По ctrl+space для functions ничего не предлагалось, так как я писал
Код:
<fn:

и далее ctrl+space.
А нужно было:
Код:
${fn:

В связи с этим и с темой jstl в целом хотел бы задать несколько вопросов:

1. Почему для работы с functions используется EL, а с core, fmt, xml и sql - обычные теги?
2. В интернете говорят, что для работы JSTL необходимы две библиотеки: standart.jar и jstl.jar. Я мавеном подключил только jstl-1.2.jar, ничего другого он с собой не подтянул. На jstl.java.net лежат вообще jstl-api-1.2.jar и jstl-impl-1.2.jar. Почему всё по-разному?
3. В своём jstl-1.2.jar я обнаружил файл permittedTaglibs.tld. Для чего он служит?
К началу Посмотреть профиль Отправить личное сообщение
Pahan : 745
Постоянный посетитель
Откуда: Минск

СообщениеЯнв 27, 2012 17:15 
Ответить с цитатой
Цитата:
1. Почему для работы с functions используется EL, а с core, fmt, xml и sql - обычные теги?

У тэгов больше возможностей, а функции компактнее. В общем, что то удобно(или возможно) делать через тэги, а что-то через функции. Просто для удобства, все функции вынесли в отдельную библиотеку.

Цитата:
2. В интернете говорят, что для работы JSTL необходимы две библиотеки: standart.jar и jstl.jar. Я мавеном подключил только jstl-1.2.jar, ничего другого он с собой не подтянул. На jstl.java.net лежат вообще jstl-api-1.2.jar и jstl-impl-1.2.jar. Почему всё по-разному?

Есть JSTL API и спецификация(интерфейсы и описание чего они должны делать) которые поставляются SUN-ом. Другие заинтересованные конторы или сам SUN пишут реализацию этих API в соответствии со спецификацией.

Все точно также как с Servlet. Sevlet API одно, а реализаций(серверов) много: Tomcat, Webshere, Resin, Jetty ...

Лично я всегда использую реализацию с jstl.java.net только за то, что у них либы по человечески называются. В остальных случаях хрен поймешь, что где.

standart.jar и jstl.jar это реализация от apache, в свое время самая популярная(а может и единственная) была. Но это никак не обязалово.

В случае с jstl-1.2.jar, просто запихнули API и реализацию в один jar.
Цитата:
3. В своём jstl-1.2.jar я обнаружил файл permittedTaglibs.tld. Для чего он служит?
В tld файлы используются для определения тегов. То-есть чтоб создать тэг эго нужно прописать в tld файле. Что-то типа того. Тут если нужны подробности лучше спецификацию почитать. Я в написании тэгов не силен, не приходилось особо.
К началу Посмотреть профиль Отправить личное сообщение
Eyjafjallajokull : 3
Новичок

СообщениеЯнв 30, 2012 10:18 
Ответить с цитатой
Pahan, спасибо за ответ!

Цитата:
У тэгов больше возможностей, а функции компактнее. В общем, что то удобно(или возможно) делать через тэги, а что-то через функции. Просто для удобства, все функции вынесли в отдельную библиотеку.

А почему к функциям обращаются через ${fn:...}, а к тегам через <c:...>?
Почему я не могу написать <fn:...> и ${c:...}?
Чем это различие определяется в реализации таглибов?
К началу Посмотреть профиль Отправить личное сообщение
Pahan : 745
Постоянный посетитель
Откуда: Минск

СообщениеЯнв 30, 2012 13:01 
Ответить с цитатой
Я в написании тэгов и функций не шарю, не было нужды. Так, что могу некоторые вещи исказить.
Цитата:
Почему я не могу написать <fn:...> и ${c:...}?

Реализуются они разным способом. Используются тоже разным способом. Да и в обще это разные вещи. Так исторически сложилось, люди которые писали JSP спецификацию решили сделать так.
Цитата:
Чем это различие определяется в реализации таглибов?

В JSP спецификации , JSP API разделяют на три части:
Core API
Tag Extension API
Expression Language API

Для создания функций ${fn:...} используется Expression Language API, а точнее класс javax.servlet.jsp.el.FunctionMapper. Там идея состоит в том, что бы позволить использовать static методы в EL. То есть все просто, берется static метод, мапится в EL.

Для создания кастом тэгов <c:...> используется Tag Extension API. Тут и классов намного больше. Да и в целом все посложнее(наследование тэгов, вложенные тэги, и т.д.).

Если интересуют детали, как сделать то, или это, тут нужно брать спеку, или книгу какую и курить ее по полной. На русском книг актуальных я не видел, сразу говорю. А спека очень тяжело читается.
К началу Посмотреть профиль Отправить личное сообщение
Eyjafjallajokull : 3
Новичок

СообщениеЯнв 30, 2012 14:40 
Ответить с цитатой
Pahan, большое спасибо за ответы! Тему можно считать закрытой Smile
К началу Посмотреть профиль Отправить личное сообщение
 
Начать новую тему  Ответить на тему
Страница 1 из 1
Список форумов
 -> Основы веб-программирования на Java


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru