Написание библиотеки тегов jsp

Я использую модель MVC, в которой я пишу слишком много веб-виджетов для разных приложений, что вызывает много повторяющейся работы для меня, чтобы решить проблему, которую я планирую написать новый пакет для тегов jsp для каждого виджета (используя tld) и сгенерированный jar-файл, который я включу во множество приложений, использующих эти виджеты, и я успешно с этим справляюсь.

Но здесь меня немного беспокоят css и javascript, которые использует виджет.

скажем, я пишу css в самом теге jsp в библиотеке, тогда в этом случае он извлекает css и скрипт каждый раз, что вызывает дополнительную задержку, в случае, если я пишу общий css на стороне клиента, тогда для нескольких приложений, которые используют мой пакет виджетов, необходимо писать CSS снова и снова?

Баночка для виджета, которую я включил в свой проект MVC.

jar -tvf AcmeUIUtils-1.0.jar
     0 Fri Dec 07 07:41:56 IST 2012 META-INF/
   106 Fri Dec 07 07:41:54 IST 2012 META-INF/MANIFEST.MF
     0 Fri Dec 07 15:54:40 IST 2012 com/
     0 Fri Dec 07 15:54:40 IST 2012 com/amazon/
     0 Fri Dec 07 15:54:40 IST 2012 com/amazon/spotui/
     0 Fri Dec 07 15:54:40 IST 2012 com/amazon/spotui/basicui/
  2339 Fri Dec 07 02:11:38 IST 2012 com/amazon/spotui/basicui/AcmeMessage.class
  1684 Fri Dec 07 15:54:40 IST 2012 com/amazon/spotui/basicui/Ping.class
     0 Fri Dec 07 15:54:40 IST 2012 com/amazon/spotui/utils/
  2989 Fri Dec 07 15:54:40 IST 2012 com/amazon/spotui/utils/AcmeTags.class
     0 Fri Dec 07 07:41:40 IST 2012 META-INF/css/
   635 Fri Dec 07 07:40:14 IST 2012 META-INF/css/error.css
  1059 Fri Dec 07 14:47:20 IST 2012 META-INF/spot-ui-component.tld
     0 Fri Dec 07 15:54:40 IST 2012 test-resources/

Теперь мой вопрос заключается в том, как элегантно загрузить error.css в мое приложение? или мне нужно внести изменения на уровне виджета?

Я не возражаю против любого решения проблемы с открытым исходным кодом. Но мне нужны только теги jsp.


person Aman Agarwal    schedule 08.12.2012    source источник


Ответы (1)


Начиная с сервлета 3.0, файл jar, помещенный в WEB-INF/lib, может содержать ресурсы, которые будут обслуживаться непосредственно веб-приложением. Эти ресурсы должны быть помещены в каталог META-INF/resources файла jar.

Таким образом, если ваша библиотека тегов jar содержит файл META-INF/resources/js/MyTaglib.js, этот файл будет доступен напрямую по URL-адресу

http://the.host.com/theWebApp/js/MyTaglib.js

Если вы нацелены на веб-приложения до servlet3.0, скажите разработчикам, чтобы они развернули файлы CSS и JS вашей taglib в определенном каталоге в веб-приложении.

person JB Nizet    schedule 08.12.2012
comment
На самом деле я планирую написать другую банку для приложения, возможно ли в этом случае элегантно получить css. - person Aman Agarwal; 08.12.2012
comment
Я не понимаю, что вы спрашиваете. Будьте более откровенны. - person JB Nizet; 08.12.2012
comment
Я хочу создать банку для widgt тега jsp, которая будет содержать js и css. и я хочу элегантно добавить эти js и css в свое приложение. - person Aman Agarwal; 08.12.2012
comment
И мой ответ: поместите классы, реализующие эти теги JSP, в банку, и в ту же банку, в META-INF/resources, поместите файлы JS и CSS, используемые тегами. Разработчикам просто нужно поместить файл jar в свое веб-приложение, чтобы использовать ваши теги. Файлы CSS и JS будут обслуживаться веб-контейнером непосредственно из файла jar. Файл error.css в вашем примере должен находиться в папке META-INF/resources. Не непосредственно под META-INF. - person JB Nizet; 08.12.2012
comment
Используете ли вы его в веб-приложении сервлета 3.0? Как это не работает? - person JB Nizet; 09.12.2012