2012-05-23 26 views
0

我創建了一個新的項目,因爲這教程JSF Tools tutorial - Build a JSF 2.0 application在JSP文件

當我嘗試通過右鍵點擊m.xhtml運行它,並在服務器選擇運行打開JSF2的Facelets頁面出現了404,我得到了404錯誤m.jsp

在瀏覽器地址欄中的網址爲:http://本地主機:8080 /馬爾瓦/ m.jsf

錯誤消息說HTTP Status 404 - /Marwa/m.jsp

這是怎麼造成的,我該如何解決呢?

這裏是我的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
<display-name>Marwa</display-name> 
    <welcome-file-list> 
    <welcome-file>m.xhtml</welcome-file> 

    </welcome-file-list> 
    <servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>/faces/*</url-pattern> 
    <url-pattern>*.jsf</url-pattern> 
    </servlet-mapping> 
    <context-param> 
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> 
    <param-value>resources.application</param-value> 
    </context-param> 
    <context-param> 
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
    <param-value>client</param-value> 
    </context-param> 
    <context-param> 
    <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name> 
    <param-value>true</param-value> 
    </context-param> 
    <context-param> 
    <param-name>org.apache.myfaces.PRETTY_HTML</param-name> 
    <param-value>true</param-value> 
    </context-param> 
    <context-param> 
    <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name> 
    <param-value>false</param-value> 
    </context-param> 
    <context-param> 
    <param-name>org.apache.myfaces.AUTO_SCROLL</param-name> 
    <param-value>true</param-value> 
    </context-param> 

</web-app> 

回答

2

它尋找一個JSP文件,而不是Facelets的文件。

JSP是舊的JSF 1.x中的默認視圖技術。因此,這個問題表明你實際上使用JSF 1.x或者在JSF 1.x modus中運行JSF 2.x。

確保您確實有JSF 2.x庫。您可以通過閱讀服務器啓動日誌或通過使用zip工具提取JSF JAR文件並讀取MANIFEST文件來檢查確切的JSF版本。您也可以重新下載正確的版本http://myfaces.apache.org/download.html(或http://javaserverfaces.java.net/作爲另一種實施方式)。確保你獲得了2.x版本。

還要確保faces-config.xml被聲明符合JSF 2.x spec版本。它應該是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 

<faces-config 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" 
    version="2.0"> 

    <!-- Config here --> 

</faces-config> 

如果您的Eclipse沒有全部自動做到這一點,那麼你顯然是使用過時的Eclipse版本。 Eclipse Helios(3.6)首次爲Java EE引入了內建JSF2支持。您可以在http://www.eclipse.org/downloads/獲得最新版本,這是目前Indigo SR2(3.7.2)。

+0

非常感謝,但它仍然無法正常工作。 – jmt

+0

好吧,那還是有問題。什麼MyFaces版本打印在服務器日誌中?服務器日誌中的任何警告?如何在真正的網頁瀏覽器中打開網頁?和'/ faces'的URL? http:// localhost:8080/Marwa/faces/m.xhtml – BalusC

+0

http://www.4shared.com/photo/G42R9jWj/jsf.html和我的戰爭文件http://www.4shared.com/file/rVmt8eQ5 /Marwa.html 當我使用這個URL localhost:8080/Marwa/faces/m.xhtml文本只有apear和任何jsf組件不會 – jmt