我不明白为什么在尝试访问我的应用程序时出现404错误
我的index.xhtml位于(网页内容)
在我的日志中,我没有错误 我使用eclipse创建了我的项目:web动态项目:
我的网址:
http://localhost:8080/jsf_getting_started/
我尝试用tomcat运行eclipse(Run On Server)。
我的网页xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>jsf_getting_started</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<context-param>
<description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>resources.application</param-value>
</context-param>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
答案 0 :(得分:1)
问题在于您已将Faces Servlet的映射设置为/faces/*
,因此为了访问您的页面并由此servlet解析,您必须访问它,如
http://localhost:8080/jsf_getting_started/faces/index.xhtml
但/faces/*
配置的问题在于Faces Servlet甚至可以处理非JSF资源,如图像,JS,CSS脚本等。
最佳解决方案是将映射更改为*.xhtml
,并将欢迎文件列表中的所有页面删除为仅index.xhtml
。您的web.xml文件将如下所示(请注意,我只是发布对此答案中描述的部分所做的更改):
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
<!-- no need of the other files... -->
</welcome-file-list>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<!-- The relevant URL mapping when using Facelets and JSF -->
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
更改web.xml文件后,重建项目,确保从Tomcat Server取消部署,然后重试。
答案 1 :(得分:0)
您需要在index.xhtml
中添加welcome-file-list
。