【问题标题】:Style Sheet does not apply on first JSF page样式表不适用于第一个 JSF 页面
【发布时间】:2011-05-18 14:29:28
【问题描述】:

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

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

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

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

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

有什么想法吗?

【问题讨论】:

    标签: java css jsf jsf-2 openfaces


    【解决方案1】:

    您应该使用调用FacesServlet 的URL 调用索引页面。它就是负责做JSF工作的人。所以你需要通过index.jsf而不是index.jsp来调用它。

    但是,最好完全摆脱这个 hacky 索引页面,并在 web.xml 中将 start.jsf 定义为 &lt;welcome-file&gt;

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

    start.jsp文件旁边的同一文件夹中提供一个start.jsf文件,这样servlet容器就会被欺骗,认为索引页确实存在(它即默认情况下不检查索引页面的任何 servlet 映射)。

    【讨论】:

    • 感谢您的回复,但不幸的是,这并没有解决我的 CSS 文件问题。
    • 那么你需要更清楚究竟是什么失败了。检查生成的 HTML 源代码。那里有 CSS 声明吗?他们的(相对)网址是否正确?等等。
    【解决方案2】:

    尝试使用重定向而不是转发。你可以在你的jsp中这样做:

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

    或使用

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

    这不是解决问题的最佳方法,我在我的项目中使用了 tukey urlrewrite:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-19
      • 2014-01-11
      • 1970-01-01
      • 2012-05-11
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多