2010-01-22 23 views
4

我開始編寫JSF網站。目前所有文件都以.xhtml結尾。當我去http://localhost:8080/myProject/start.jsf一切都很好。但是,當我將文件從start.xhtml重命名爲start.jsf時,我變成了NoClassDefFound錯誤。JSF僅適用於.xhtml結尾

我的錯誤是什麼?

<servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.jsf</url-pattern> 
    </servlet-mapping> 
    <context-param> 
    <param-name>javax.faces.PROJECT_STAGE</param-name> 
    <param-value>Development</param-value> 
    </context-param> 

回答

6

你必須改變javax.faces.DEFAULT_SUFFIX參數(在web.xml中)

<context-param> 
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
    <param-value>.jsf</param-value> 
</context-param> 

然而,這是不可取的 - 無論是使用文件.xhtml.jsp。 請注意,您可以使用.jsp且facelets沒有問題(例如,如果IDE的自動完成不適用於.xhtml)。

還要注意的是:

  • 臉上servlet映射決定JSF頁面如何從http角度
  • DEFAULT_SUFFIX參數表明什麼是文件的擴展名稱。
+0

謝謝,這個作品 – ThreeFingerMark 2010-01-22 15:15:03

1

爲什麼要重命名文件start.jsf? JSF文件的正確擴展名爲.xhtml(但您可以修改此默認擴展名,如Bozho所述)。

事實上,要精確,該擴展是由Facelets定義(或JSF 2.0,因爲它本地集成Facelets的),如果使用的「基本」 JSP文件,這是不同的。

0

最好留在.xhtml中,因爲這是正確的方式,但可以使用web.xml中的javax.faces.DEFAULT_SUFFIX上下文參數進行配置。

+0

隨着.xhtml擴展我可以下載帶有代碼的網頁。 Eclipse不會使用.xhtml文件完成代碼 – ThreeFingerMark 2010-01-22 15:12:23