2011-05-18 79 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> 
相關問題