Глобально доступные ресурсы в приложении Wicket

StackOverflow https://stackoverflow.com/questions/1632478

  •  06-07-2019
  •  | 
  •  

Вопрос

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

<Ол>
  • иметь единый каталог для глобально используемых изображений, js, css
  • Зарегистрируйте (или не зарегистрируйте) эти ресурсы, чтобы они были доступны с любой унаследованной страницы или страниц одного уровня с BasePage, который я мог бы создать в будущем
  • Разрешить доступ к этим ресурсам в CSS и JS (например, ссылки на изображения)
  • До сих пор я прочитал несколько примеров, которые показывают, как упаковать ресурс для области уровня компонента или приложения, но ни один из них, кажется, не решает все 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 () вашего приложения и использовать вместо него аннотации.

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top