Инкапсуляция пользовательских тегов JSP с изображениями - PullRequest
1 голос
/ 20 января 2012

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

<pageElements:header/>

Аспект настраиваемого тега прост, и я создал тег заголовкакоторая предоставляет html-разметку котельной пластины, содержащую некоторый текст.

Проблема, с которой я столкнулся, заключается в том, что они хотят, чтобы некоторые изображения были упакованы в банку для таких вещей, как логотипы и так далее.Очевидно, что если я добавлю что-то вроде ...

<img alt="logo" src="images/logo.png"/>

... в тег, он будет правильно отображен, но будет выглядеть в контексте проекта, использующего тег для изображения.Он не существует, так как находится в каталоге resources / images в файле jar, содержащем определения тегов.

Кто-нибудь знает, как можно упаковать изображение в файл jar, содержащий определения тегов изатем обратитесь к нему в теге, чтобы, когда проект использует тег ...

<pageElements:header/>

... он правильно отображал текст и изображения?

По существу, что мне нужнознать, где в файле jar должны храниться изображения, и как мне ссылаться на них в файле tagx, определяющем содержимое тега.

Большое спасибо,

Mark

1 Ответ

0 голосов
/ 20 января 2012

В спецификации сервлета 3.0 написано:

Корень этой иерархии служит корнем документа для файлов, которые являются частью приложения. Например, для веб-приложения с контекстный путь / каталог в веб-контейнере, файл index.html в база иерархии веб-приложений или в файле JAR внутри WEB-INF / lib, который включает index.html в META-INF / resources каталог может быть обслужен для удовлетворения запроса из /catalog/index.html. Если index.html присутствует как в корневом контексте, так и в Каталог META-INF / resources файла JAR в WEB-INF / lib каталог приложения, затем файл, который доступен в НЕОБХОДИМО использовать корневой контекст.

Таким образом, вы можете поместить свои изображения в банку в разделе META-INF / resources, и они будут отображаться так, как если бы они были непосредственно на войне.

Предыдущие версии спецификации не предоставляют такой возможности, поэтому вам придется использовать сервлет или фильтр для его реализации. Spring MVC и Struts2 предоставляют это изначально. Я не знаю о других фреймворках.

...