2012-04-03 107 views
0

我使用JSF構建2.0的Web應用程序,並在我的WEB-INF> lib文件夾一個JAF-facelets.1.1.10罐子小面2.0,所以現在我試圖刪除這樣我就可以使用內置的int facelets 2.0了,我通過this Question which balusC answered讀到了,除了那部分它說我需要用ViewHandlerWrapper替換FaceletViewHandler。爲此,我看到了this question,但我的項目中沒有任何faceletViewhandler類。遷移到從Facelets的1.x的

截至目前,我webxml看起來像這樣(請taht我沒有錯過任何東西,或者說我引用的東西我不應該:

<?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> 

正如你所看到的,我有相當多的面孔,CONFIGS我刪除了

<application> 
     <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> 
    </application> 

而現在它看起來像這樣(我知道有些功能我不需要像導航,但它真的傷到保持taht方式?):

<?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,但不起作用,它只是表明我:

it doesn't make sense to me

回答

2

錯誤提示包括JSTL-1.2.jar available here在同一個文件夾中的JSF罐子。

沒有必要爲小面2.0罐子,因爲JSF 2.0採用的Facelets作爲其默認視圖聲明語言(VDL),現在它被捆綁JSF罐子內(兩個的MyFaces和鑽嘴魚科)

+0

我添加的jar,但它沒有前抱怨這很奇怪。我添加了它,現在當我嘗試在服務器上運行它時(它試圖打開index.xhtml),彈出窗口顯示詢問我是否要打開該文件或保存它?我從來沒有得到過這個 – Myy 2012-04-03 18:41:39

0

爲了解決這個問題問題,我不得不添加jstl-impl.jar和jstl-api.jar並更新到最新的jsf-impl.jar和jsf-api.jar。這解決了它。

真的不知道爲什麼它從來沒有抱怨過它時,facelets.1.10.jar在那裏。

+0

你應該沒有JSP API/impl在你的webapp中!這是應該提供它的servletcontainer本身。您的web應用程序現在不可移植,並且只能在與那些JSP庫源自的servlet容器製作/版本相同的情況下工作。 – BalusC 2012-04-04 11:49:24

+0

呵呵?所以我必須刪除它們呢?還是你告訴我它不可修復? :( – Myy 2012-04-04 21:43:56

+0

http://stackoverflow.com/questions/4441713/migrating-from-jsf-1-2-to-jsf-2-0/4532870#4532870你告訴我們拋棄JSF 2.0罐子在我們的WEB_INF,由於它的工作原理我認爲它是正確的...我現在該做什麼? – Myy 2012-04-04 23:18:37