Я думаю, что проблема Серджони двоякая.
Во-первых, верно, что так называемый корневой родственник, как сказал BalusC, фактически относительный домен, поэтому в данном примере это относительное значение http://example.com/
, а не http://example.com/context/
.
Таким образом, вы должны указать
<link rel="stylesheet" type="text/css" href="${request.contextPath}/styles/decoration.css" />
Кстати, BalusC, поздравляю, я впервые вижу, что это правильно объяснено! Я изо всех сил пытался обнаружить это.
Но, если вы хотите упростить и предложить:
<link rel="stylesheet" type="text/css" href="styles/decoration.css" />
Если предположить, что стиль dir является родственным элементом вашей текущей страницы, то у вас может возникнуть вторая проблема:
Затем вы используете метод относительного URL, и, если вы пришли на эту страницу с помощью переадресации, а не перенаправления, ваш браузер может быть обманут и не может следовать по относительному пути.
Чтобы решить эту вторую проблему, вы должны добавить это:
<head>
<base href="http://${request.serverName}:${request.serverPort}${request.contextPath}${request.servletPath}" />
Базовый элемент должен предшествовать любой ссылке.
С помощью базовой команды вы сообщаете браузеру, где вы на самом деле.
Надеюсь, это поможет.
И, кстати, еще одна странная вещь в этом чудесном мире JSF:
для ссылки со страницы на шаблон лицевой стороны, корневая относительная ссылка IS, на этот раз, включая контекст, так:
<ui:composition template="/layouts/layout.xhtml">
это действительно ссылка на http://example.com/context/layouts/layout.xhtml
, а не http://example.com/layouts/layout.xhtml
, как для <a>
или <link>
.
Жан-Мари Галлио