2011-05-18 31 views
1

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

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

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

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

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

任何想法?

回答

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映射)。

+0

谢谢你为你的答复,但不幸的是这并没有解决我的CSS文件的问题。 – 2011-05-19 07:11:59

+0

然后你需要更清楚地知道究竟失败了什么。检查生成的HTML源代码。 CSS声明在那里?他们的(相对)网址是否正确?等等 – BalusC 2011-05-19 11:39:34

+0

谢谢。它现在有效。 :-) – 2011-05-23 09:41:38

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> 
相关问题