JSF仅适用于.xhtml结尾

时间:2010-01-22 15:00:08

标签: jsf java-ee facelets

我从JSF网站的编程开始。目前所有文件都有.xhtml结尾。当我去http://localhost:8080/myProject/start.jsf时一切都很好。但是当我将文件从start.xhtml重命名为start.jsf时,我变成了NoClassDefFound错误。

我的错误是什么?

  <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>

3 个答案:

答案 0 :(得分: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与facelet一起使用而没有任何问题(例如,如果IDE的自动完成不适用于.xhtml)。

另请注意:

  • faces servlet mapping确定如何从http perspective
  • 引用jsf页面
  • DEFAULT_SUFFIX参数表示文件的扩展名。

答案 1 :(得分:1)

为什么要重命名文件start.jsf? JSF文件的正确扩展名为.xhtml(但您可以修改此默认扩展名,如Bozho所述)。

事实上,确切地说,此扩展由Facelets(或JSF 2.0,因为它本身集成了Facelets)定义,如果您使用“基本”JSP文件,则会有所不同。

答案 2 :(得分:0)

最好继续使用.xhtml,因为这是正确的方法,但您可以使用web.xml中的javax.faces.DEFAULT_SUFFIX context-param进行配置。