Таблица стилей не применяется на первой странице JSF - PullRequest
2 голосов
/ 18 мая 2011

Таблица стилей не применяется на моей первой странице JSF.У меня есть index.jsp, который перенаправляет на мою первую страницу JSF.

<html>
  <head></head>
  <body>
    <jsp:forward page="./start.jsf" />
  </body>
</html>

На start.jsf таблица стилей не применяется, но если я перехожу на вторую страницу, моя таблица стилей полностью применяется.

Вторая страница была моей первой, и у меня было такое же поведение.Без изменений вторая страница работает нормально, пока страница не первая в строке.

Поэтому CSS и сама страница должны быть правильными.Я думаю, что это проблема конфигурации.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 18 мая 2011

Вы должны вызвать страницу индекса, используя URL, который вызывает FacesServlet. Именно он отвечает за выполнение работ JSF. Так что вам нужно вызвать его по index.jsf вместо index.jsp.

Однако лучше вообще избавиться от этой хакерской индексной страницы и вместо нее определить start.jsf как <welcome-file> в web.xml.

<welcome-file-list>
    <welcome-file>start.jsf</welcome-file>
</welcome-file-list>

и предоставляют пустой файл start.jsf в той же папке рядом с файлом start.jsp, так что сервлет-контейнер будет обманут, что страница индекса действительно существует (а именно по умолчанию не проверяет сопоставления сервлетов для страницы индекса).

0 голосов
/ 18 мая 2011

Попробуйте использовать редирект вместо форварда.Вы можете сделать это так в своем jsp:

<%  response.setStatus(301);
    response.setHeader("Location", "/start.jsf?" + request.getQueryString());           
response.setHeader("Connection", "close");
%>

или использовать

     response.sendRedirect("/start.jsf?" + request.getQueryString());

Это не лучший способ решить проблему, я использую в своем проекте Tuckey urlrewrite:

    <urlrewrite>
    ...
      <rule enabled="true">
        <from>^/$</from>
        <to last="true">/index.jsf</to>
      </rule>   
    ...
   </urlrewrite>
...