样式表不适用于第一个JSF页面

时间:2011-05-18 14:29:28

标签: java css jsf jsf-2 openfaces

样式表不适用于我的第一个JSF页面。我有一个index.jsp,它转发到我的第一个JSF页面。

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

在start.jsf上,样式表不适用,但如果我导航到第二页,我的样式表完全适用。

第二页是我之前的第一页,我有同样的行为。没有更改,只要页面不是行中的第一页,第二页就可以正常工作。

因此CSS和页面本身必须正确。我认为这是一个配置问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您应该使用调用FacesServlet的URL来调用索引页面。它就是负责JSF工作的人。因此,您需要index.jsf而不是index.jsp来调用它。

然而,更好的方法是完全摆脱这个hacky索引页面,并在start.jsf中将<welcome-file>定义为web.xml

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

start.jsf文件旁边的同一文件夹中提供 start.jsp文件,以便servletcontainer被欺骗了索引页面确实存在(默认情况下不会检查索引页面的任何servlet映射)。

答案 1 :(得分:0)

尝试使用重定向而不是转发。您可以在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>