我是JSF的新手,所以不要认为这不是一个愚蠢的错误。
我正在将我的webapp从Eclipse Indigo部署到JBoss 6.1中。我可以检查webapp是否已部署在服务器中,因为静态index.html文件正常工作(并且其中的更改通过Web浏览器反映)。
我在pages / NewRequest.jsf中有一个JSF2 Facelet,它的逻辑很少(实际上它是普通的XHTML):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:body>
Hola mundo again....
</h:body>
</html>
我的web.xml如下(我检查过配置了FaceServlet)
<?xml version="1.0"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee web-app_3_0.xsd">
<display-name>GesMan</display-name>
<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>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>NewRequest.jsf</welcome-file>
</welcome-file-list>
</web-app>
这一切对我来说都是合法的,但是当我尝试访问JSF时,我只得到一个404错误页面,它告诉我一个与我的JSP不存在的JSP同名的JSP。控制台和server.log文件中都没有显示错误
你能告诉我我做错了什么,或者我怎样才能得到更具体的错误信息?
答案 0 :(得分:1)
实际视图文件的文件扩展名应代表所使用的视图技术(例如.xhtml
或.jsp
),而不是JSF映射(例如.jsf
)。您应该有pages/NewRequest.xhtml
,而不是pages/NewRequest.jsf
。
您的另一个问题是欢迎文件不能代表映射(虚拟)文件名,但必须代表实际文件名。所以你需要NewRequest.xhtml
。但这反过来又要求您将FacesServlet
映射到该URL模式。
所以,总而言之,只需简化web.xml
,如下所示:
<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>*.xhtml</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>NewRequest.xhtml</welcome-file>
</welcome-file-list>
通过这种方式,您可以继续在网址中使用.xhtml
,而无需摆弄虚拟网址。