Вот моя установка:
- Структура папок и имена файлов веб-приложения точно такие же, как у UnmappedResourceHandler javadoc
- UnmappedResourceHandler уже зарегистрирован в
faces-config.xml
/javax.faces.resource/*
уже сопоставлен с FaceServlet вweb.xml
style.css
это:
body {
background: url("image/background.png");
}
body .test{
background-image: url("#{resource['css:image/background.png']}");
}
Затем я запрашиваю http://localhost:8080/app/javax.faces.resource/style.css?ln=css
и получаю ответ:
body {
background: url("image/background.png");
}
body .test{
background-image: url("/app/javax.faces.resource/image/background.png?ln=css");
}
Я ожидаю, что все относительные URL-адреса в CSS будут преобразованы в допустимый URL-адрес JSF, как это делает #{resource}
, так что мне больше не нужно использовать #{resource}
для ссылки на относительные URL-адреса в CSS, но относительный URL-адрес background
для селектор body
остается неизменным.
Обновление ответа BalusC:
Если используется библиотека ресурсов, добавление
?ln=libraryname
ко всем изображениям CSS будет работать!Но если библиотека ресурсов не используется,
<h:outputStylesheet name="css/style.css" />
генерирует<link rel="stylesheet" media="screen" type="text/css" href="/app/javax.faces.resource/css/style.css.xhtml">
Если я правильно понимаю из this, используя UnmappedResourceHandler и сопоставление
/javax.faces.resource/*
сfacesServlet
вweb.xml
должно потому что JSF генерирует ссылкуstyle.css
без расширенияxhtml
.