我从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>
答案 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
)。
另请注意:
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进行配置。