Глобально доступные ресурсы в приложении Wicket
Вопрос
В настоящее время у меня есть приложение, которое состоит из BasePage, который в качестве заголовка (панели), нижнего колонтитула (панели) и в центре для унаследованного содержимого страницы. Проблема, с которой я сталкиваюсь, связана с ResourceReferences (возможно, это даже не правильный путь). Я ищу решение, которое позволит мне сделать следующее:
<Ол>До сих пор я прочитал несколько примеров, которые показывают, как упаковать ресурс для области уровня компонента или приложения, но ни один из них, кажется, не решает все 3 проблемы, с которыми я ищу помощь. Крайне важно, чтобы мне не приходилось копировать глобально используемые изображения (значок редактирования, логотипы и т. Д.) В каждый пакет компонентов для ссылок, и было бы неплохо из соображений обслуживания сделать эти привязки глобально в одном месте для удобства ссылки и обновление.
Решение
Это значительно изменилось со времен Wicket 1.4. Смотрите «Добавление JavaScript или CSS с помощью ресурса "в вики 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 () вашего приложения и использовать вместо него аннотации.
РЕДАКТИРОВАТЬ: обновленная ссылка. К сожалению, документация в википчах вики сейчас, похоже, исчезла. хотя некоторые статьи в нашем блоге .