我尝试转到我的页面“index.xhtml”,在浏览器地址栏中输入/index.xhtml但是它导致404错误,找不到index.jsp。我不知道为什么要调用jsp。
我的观点:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
<title>This is a Test</title>
</h:head>
<h:body>
<div>
<H2>
<h:outputText value="test"/>
</H2>
</div>
</h:body>
</html>
我的web.xml:
<servlet>
<servlet-name>FacesServlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>FacesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
答案 0 :(得分:1)
这表明你实际没有使用JSF 2.x,而是使用JSF 1.x.在JSF 1.x中,FacesServlet
默认使用.jsp
后缀来根据请求URL定位视图文件。因此,当请求index.xhtml
时,它将查找物理文件index.jsp
。在JSF 2.x中,默认后缀已更改为.xhtml
,这意味着当请求index.xhtml
时,它将查找物理文件index.xhtml
。
*.xhtml
中的<url-pattern>
仅仅是FacesServlet
在传入的HTTP请求上必须侦听的网址格式。
为了正确使用JSF 2.x,您应该删除运行时类路径中的所有JSF 1.x库。其中包括/WEB-INF/lib
文件夹。如果您对该版本不确定,因为它没有在JAR的文件名中提及,请使用ZIP工具将其解压缩并查看/META-INF/MANIFEST.MF
。或者只删除所有内容并从http://javaserverfaces.java.net重新下载正确的内容。