Jsp JSF2.0标记未出现在Tomcat6.0服务器上
我刚刚使用eatj.com部署了我的第一个JSF站点 我已经使用glassfish在netbeans上测试了我的应用程序,带有JSF标记的站点在localhost上运行良好 我已经通过ftp将项目文件上传到tomcat服务器上的webapps director文件夹 jsp-api.jar文件位于Tomcat服务器上的/lib文件中 当我重新启动服务器并转到/webapps/myproject/web/index.xhtml时,页面会被加载,但jsf标记中没有一个是可见的 我尝试将jar库复制到/webapps/myproject/web/web-INF/lib/但是没有任何更改 也许这与我的主页是.xhtml而不是.jsf有关?但我会想,如果它在我的本地主机上工作,那么它在这个服务器上工作吗 我确信服务器支持JSF,因为有JSF页面运行的例子 任何帮助都将不胜感激 谢谢 编辑: 下面是我当前的web.xml文件Jsp JSF2.0标记未出现在Tomcat6.0服务器上,jsp,jsf,tomcat,xhtml,tomcat6,Jsp,Jsf,Tomcat,Xhtml,Tomcat6,我刚刚使用eatj.com部署了我的第一个JSF站点 我已经使用glassfish在netbeans上测试了我的应用程序,带有JSF标记的站点在localhost上运行良好 我已经通过ftp将项目文件上传到tomcat服务器上的webapps director文件夹 jsp-api.jar文件位于Tomcat服务器上的/lib文件中 当我重新启动服务器并转到/webapps/myproject/web/index.xhtml时,页面会被加载,但jsf标记中没有一个是可见的 我尝试将jar库复制到
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</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>*.xhtml</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
只有当请求URL与
web.xml
中FacesServlet
的
匹配时,才会处理JSF标记。您似乎已将其映射到*.jsf
,但index.xhtml
的
与此不匹配。您有两种选择:
- 在
的*.xhtml
上映射
,而不是FacesServlet
。这样,您就不需要摆弄虚拟URL了*.jsf
- 将
更改为
,并在根文件夹中的index.jsf
旁边创建一个空的index.xhtml
文件,以欺骗服务器它确实存在,以防止404错误index.jsf
/lib
中有一个jspapi.jar
文件与此问题无关。首先,这是Tomcat的标准部分,其次,在使用Facelets时根本不使用它
最后但并非最不重要的一点是,确保您在webapp的
/WEB-INF/lib
文件夹中附带一个具体的JSF实现。Tomcat作为一个简单的JSP/Servlet容器,即不附带JSF,而Glassfish作为一个成熟的JavaEE应用服务器。如果没有,请在部署到Tomcat之前,将javax.faces.jar
文件放到webapp的/WEB-INF/lib
文件夹中。还要确保您的web.xml
声明为符合Servlet 2.5,因为Tomcat 6是一个相当旧的版本,它不支持Servlet 3.0,就像Glassfish 3一样。如果您需要Servlet 3.0,您可以使用Tomcat 7。@Mark:的确如此,但eat4j.com只提供Tomcat 6托管。我个人更愿意访问openshift.com。JBoss AS 7上的免费云托管。足够公平了。J2EE规范的全部要点是,您可以将您的应用程序从一个规范投诉容器移动到另一个规范投诉容器—选择最适合您的一个。您好,感谢您快速而有用的回复。我已经将/WEB-INF/lib文件夹中的jar更改为javax.faces.jar文件,因此现在只有这个jar存在。以前我的was/faces/*但是我把它改成了*.xhtml,我仍然有同样的问题。请参见编辑my web.xml文件您的
错误,但这应该会导致另一个问题,并且只有在您尝试按URL打开文件夹时才会出现。请检查服务器启动日志,查看JSF是否已正确初始化。
INFO: Server startup in 1594 ms
May 7, 2012 1:09:50 PM org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-6713
May 7, 2012 1:09:51 PM org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
May 7, 2012 1:09:51 PM org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-6713
May 7, 2012 1:09:57 PM org.apache.catalina.core.AprLifecycleListener init
INFO:
May 7, 2012 1:09:57 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-6713
May 7, 2012 1:09:57 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1017 ms
May 7, 2012 1:09:57 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
May 7, 2012 1:09:57 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.14
May 7, 2012 1:09:59 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-6713
May 7, 2012 1:09:59 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:4713
May 7, 2012 1:09:59 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/62 config=null
May 7, 2012 1:09:59 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1580 ms