首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从facelets 1.x迁移到facelets 2.0

从facelets 1.x迁移到facelets 2.0
EN

Stack Overflow用户
提问于 2012-04-03 17:41:54
回答 2查看 1K关注 0票数 0

我正在使用JSF2.0构建一个web应用程序,并且在我的WEB> lib文件夹中有一个jaf-facelets.1.1.10 jar,所以现在我尝试删除它,这样我就可以使用我正在通过balusC回答的这个问题阅读的构建的intfac卷2.0,并且我已经这样做了,除了saysI需要用ViewHandlerWrapper替换FaceletViewHandler的部分。为此,我看到了这个问题,但我的项目中没有任何faceletViewhandler类。

到目前为止,我的webxml看起来像这样(请检查一下我没有遗漏任何东西,或者我引用的是我不该引用的东西:

代码语言:javascript
复制
<?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>

正如你所看到的,我有很多张脸

代码语言:javascript
复制
<application>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
    </application>

现在它看起来是这样的(我知道一些我不需要像导航那样的特性,但是保持它的方式真的很痛苦吗?):

代码语言:javascript
复制
<?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上运行了这个项目,并得到了这个错误

代码语言:javascript
复制
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之间的关系是什么呢?

我尝试过添加jstl.jar,但这不起作用,它只是向我展示了以下内容:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-03 17:51:06

错误建议将jstl-1.2.jar 可在这里找到包含在jsf所在的文件夹中。

不需要facples2.0jar,因为JSF2.0采用facelets作为它的默认视图声明语言(VDL),现在它被捆绑在jar中(用于MyFaces和Mojarra)

票数 2
EN

Stack Overflow用户

发布于 2012-04-04 06:56:53

为了解决这个问题,我不得不添加jstl-Im.jar和jstl-api.jar,并更新到最新的jsf-Im.jar和jsf-api.jar。修好了。

不知道为什么它从来没有抱怨它的脸。1.10.jar在那里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9998524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档