url将xhtml扩展错误到jsp

时间:2013-07-24 14:57:00

标签: jsp jsf-2 tomcat7

我尝试转到我的页面“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>

1 个答案:

答案 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重新下载正确的内容。

另见: