В моем приложении JSF 2.0 Facelets у меня есть один великолепный шаблон, который я хочу использовать на всех страницах.Он находится в корневом каталоге веб-приложения, замаскированного именем template.xhtml.Так что на него ссылаются, как и следовало ожидать:
<ui:composition template="./template.xhtml">
Однако я время от времени перехожу к файлам клиента в подкаталогах.Полезно организовать их таким образом из-за разных уровней привилегий.Фейслеты в этих подкаталогах будут иметь ссылку на тот же шаблон, как этот:
<ui:composition template="../template.xhtml">
Пока все хорошо.Однако в заголовке шаблона я добавляю css следующим образом:
<link href="./resources/css/default.css" rel="stylesheet" type="text/css" />
<link href="./resources/css/tableLayout.css" rel="stylesheet" type="text/css" />
<link href="../resources/css/default.css" rel="stylesheet" type="text/css" />
<link href="../resources/css/tableLayout.css" rel="stylesheet" type="text/css" />
Причина избыточных ссылок в том, что я не нашел другого способа заставить шаблон работать из контекстакорневой каталог или подкаталог.Путь, начинающийся с /, не будет работать, если вы не введете в него имя приложения, например:
/TheApp-Ver1_0/resources/css/default.css
Проблема в том, что абсолютный путь начинается с переменной, а не с константы.Переменная зависит от того, как приложение развернуто в контейнере.Есть какой-нибудь чистый способ решить эту проблему?
Я провел несколько поисков, чтобы найти этот вопрос.Честный.Однако я подозреваю, что это еще один , один из тех, где BalusC набегает в, дает ссылку на ослепительно очевидное решение, широко обсуждаемое где-то, где я пропустил.