4

我从 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>
4

3 回答 3

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用于您的文件。请注意,您可以毫无问题地使用.jspfacelets(例如,如果您的 IDE 的自动完成功能不适用于.xhtml)。

另请注意:

  • faces servlet 映射确定如何从 http 角度引用 jsf 页面
  • DEFAULT_SUFFIX参数指示文件的扩展名是什么。
于 2010-01-22T15:02:30.143 回答
1

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

事实上,准确地说,这个扩展是由Facelets(或 JSF 2.0,因为它本机集成了 Facelets)定义的,如果使用“基本”JSP 文件,情况就不同了。

于 2010-01-22T15:03:43.333 回答
0

最好保留 .xhtml,因为这是正确的做法,但您可以使用 web.xml 中的 javax.faces.DEFAULT_SUFFIX 上下文参数对其进行配置。

于 2010-01-22T15:04:03.940 回答