Статические ресурсы с Richfaces 4.x

Я переношу свое веб-приложение с Richfaces с версии 3.3.3 на 4.1, но у меня есть несколько проблем со статическими ресурсами (в основном изображения и CSS). Я знаю, что в JSF2 есть механизм для обслуживания такого рода ресурсов (все они помещаются в папку с именем «ресурсы»). В связи с этим у меня два вопроса:

  1. Можно ли изменить эту папку на другую?
  2. Что происходит с относительными путями в CSS? У меня есть много изображений, связанных со свойством background-image, но Richfaces 4.1 не разрешает их правильно. Например, я загружаю свой CSS, размещенный в /resources/css, следующим образом:

    ‹ h:outputStylesheet library="css" name="wdCalendar/calendar.css"/>

calendar.css содержит этот класс:

.cic {
   background-repeat: no-repeat;
   display: inline-block;
   background-image: url(images/calendar/combined.gif);
}

Richfaces разрешает URL как

http://nameApp/servletApp/javax.faces.resource/wdCalendar/images/calendar/combined.gif

Но я полагаю, что это должно быть

http://nameApp/servletApp/resources/css/wdCalendar/images/calendar/combined.gif

заранее спасибо


person Sobrino    schedule 07.02.2013    source источник


Ответы (1)


  1. Да, вы можете изменить это, папка src/main/webapp (при условии, что она выглядит так в вашем проекте) станет /your-app на сервере, и вы можете использовать абсолютные пути оттуда.
  2. Это потому, что h:outputStylesheet помещает ресурсы в своего рода «абстрактную» папку (я не знаю специфики, но это выглядит так) и позволяет сервлету обрабатывать их, посмотрите, как выводятся ссылки таблицы стилей. Есть несколько выходов из этого

    • Use an absolute path

    /your-app/resources/css/wdCalendar/images/calendar/combined.gif

    • или относительный путь выхода из "абстрактной" папки

    ../resources/css/wdCalendar/images/calendar/combined.gif

    • или используйте относительный путь, который может обрабатывать сервлет

    images/calendar/combined.gif.jsf?ln=css/wdCalendar (обратите внимание на .jsf, который является сопоставлением сервлета по умолчанию, определенным в web.xml, он может выглядеть иначе в вашем приложении; он должен выглядеть так же, как выглядит ваша ссылка на таблицу стилей). Кроме того, не имеет значения, какая часть пути находится в ln (она может быть пустой), если это правильный путь, если вы его соедините.

person Makhiel    schedule 07.02.2013