Глобально доступные ресурсы в приложении Wicket - PullRequest
7 голосов
/ 27 октября 2009

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

  1. Иметь единый каталог для глобально используемых изображений, js, css
  2. Зарегистрируйте (или не зарегистрируйте) эти ресурсы, чтобы они могли быть доступны с любой унаследованной страницы или страниц одного уровня на BasePage, который я мог бы создать в будущем
  3. Разрешить доступ к этим ресурсам в CSS и JS (например, ссылки на изображения)

До сих пор я читал несколько примеров, которые показывают, как упаковать ресурс для области уровня компонента или приложения, но ни один из них, кажется, не решает все 3 проблемы, с которыми я ищу помощь. Крайне важно, чтобы мне не приходилось копировать глобально используемые изображения (значок редактирования, логотипы и т. Д.) В каждый пакет компонентов для ссылок, и было бы неплохо из соображений обслуживания сделать эти привязки глобально в одном месте для удобства ссылки и обновление.

1 Ответ

7 голосов
/ 27 октября 2009

Это значительно изменилось со времен Wicket 1.4. Пожалуйста, смотрите «Добавление Javascript или CSS с использованием ресурса» в Wiki Wicket

Чтобы сделать изображения и другие ресурсы глобально доступными (особенно из файлов CSS и JS), подключите их в методе init () ваших приложений:

mountSharedResource("/images/submit.jpg", new ResourceReference(MyComponent.class, "foo.jpg").getSharedResourceKey());

абсолютно не нужно дублировать ресурсы . Ресурс не обязательно должен быть в тех же пакетах, что и сам компонент. В наших приложениях мы помещаем глобально используемые ресурсы в выделенные пакеты (например, com.example.myapp.images) и помещаем в него один класс (например, ImagesScope.java) - то же самое для JS и CSS.

Для изображений вам не понадобится ResourceReference, поскольку вам не понадобятся ссылки, представленные в вашем коде (кроме org.apache.wicket.markup.html.image.Image). Для JS и CSS используйте

add(CSSPackageResource.getHeaderContribution(PanelOne.class, "PanelOne.css"));

Кстати, я являюсь автором маленькой библиотеки под названием wicketstuff-merged-resources , доступной на GitHub. Используя эту библиотеку, вы можете пропустить ручное монтирование в init () вашего приложения и использовать вместо него аннотации.

РЕДАКТИРОВАТЬ: обновленная ссылка. К сожалению, документация в википчах вики сейчас, похоже, исчезла. В нашем блоге несколько статей .

...