我正在使用JSF 2.0构建一个Web应用程序,并且在我的WEB-INF>中有一个jaf-facelets.1.1.10 jar。 lib文件夹,所以现在我正在尝试删除它,所以我可以使用我正在阅读this Question which balusC answered的内置int facelets 2.0,我已经完成了,除了部分,它说我需要用ViewHandlerWrapper替换FaceletViewHandler。为此,我看到this question,但我的项目中没有任何faceletViewhandler类。
截至目前,我的webxml看起来像这样(请检查我没有错过任何东西,或者我引用的东西我不应该:
<?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>miloWeb</display-name>
<welcome-file-list>
<welcome-file>faces/pages/index.xhtml</welcome-file>
</welcome-file-list>
<listener>
<listener-class>com.bravo.listeners.ServletListener</listener-class>
</listener>
<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>
<servlet>
<servlet-name>PdfServlet</servlet-name>
<servlet-class>com.bravo.servlets.PdfServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PdfServlet</servlet-name>
<url-pattern>/PdfServlet</url-pattern>
</servlet-mapping>
<filter>
<filter-name>MyFacesExtensionsFilter</filter-name>
<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFacesExtensionsFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<context-param>
<description>
This is to Have separated faces.config files
</description>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>
/pages/history/faces-config.xml,
/pages/contactInformation/faces-config.xml,
/pages/childHealthRecord/faces-config.xml,
/pages/dashboard/faces-config.xml,
/pages/insurance/faces-config.xml,
/pages/search/faces-config.xml,
/pages/labs/faces-config.xml,
/pages/patient/faces-config.xml,
/pages/physical/faces-config.xml,
/pages/notes/faces-config.xml,
/pages/scheduler/faces-config.xml,
/pages/settings/faces-config.xml,
/pages/orderEntry/faces-config.xml,
/pages/vitals/faces-config.xml
</param-value>
</context-param>
<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>
</web-app>
正如你所看到的,我有很多面孔 - 我删除了
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
现在它看起来像这样(我知道一些我不需要的功能,比如导航,但这样做真的很伤心吗?):
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
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-facesconfig_2_0.xsd"
version="2.0">
<managed-bean>
<managed-bean-name>vitalsBB</managed-bean-name>
<managed-bean-class>com.bravo.vitals.VitalsBB</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<navigation-rule>
<navigation-case>
<from-outcome>vitals</from-outcome>
<to-view-id>/pages/vitals/vitals.xhtml</to-view-id>
<redirect />
</navigation-case>
</navigation-rule>
</faces-config>
做了一些更改后就这样了,我在tomcatv7上运行项目并得到错误:
java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:452)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:140)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:349)
这看起来像我的文件这样的错误吗?因为我所做的就是删除jar-facelets.1.1.10.jar,现在我收到了这个错误。但是应用程序工作正常b4我删除了facelets jar,那么这两个jar之间的关系是什么?
我尝试添加jstl.jar,但这不起作用,它只是告诉我这个:
答案 0 :(得分:2)
错误建议在jsf jars所在的同一文件夹中包含jstl-1.2.jar available here。
不需要facelets 2.0 jar,因为JSF 2.0采用了facelets作为其默认的View声明语言(VDL),现在它被捆绑在jsf jar中(对于MyFaces和Mojarra)
答案 1 :(得分:0)
要解决此问题,我必须添加jstl-impl.jar和jstl-api.jar并更新到最新的jsf-impl.jar和jsf-api.jar。修好了。
当facelets.1.10.jar在那里时,真的不知道它为什么从不抱怨它。