2012-04-03 12 views
0

Ich baue eine Web-App mit JSF 2.0 und hatte eine Jaf-Facelets.1.1.10 Jar in meinem WEB-INF> lib-Ordner, so jetzt versuche ich zu entfernen dass ich also die eingebauten Int Facelets 2.0 verwenden kann, die ich durch this Question which balusC answered gelesen habe, und ich habe das getan, außer dem Teil, wo es heißt, ich muss FaceletViewHandler durch ViewHandlerWrapper ersetzen. dafür sah ich this question, aber ich habe keine FaceletViewhandler-Klassen in meinem Projekt.Migrieren zu Facelets 2.0 von Facelets 1.x

ab sofort, sieht meine webxml wie folgt (bitte taht ich nichts übersehen haben, oder ich Referenzierung etwas, was ich nicht sollte:

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

Und wie Sie sehen können, ich habe schon einige Gesichter-configs entfernte ich die

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

Und jetzt sieht es wie folgt aus (ich kenne einige Funktionen, die ich wie die Navigation nicht brauchen, aber weh tut es wirklich taht Weg zu halten?):

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

nach ein paar Änderungen machen und es so zu verlassen, betreibe ich das Projekt auf tomcatv7 und nutzen Sie diesen Fehler:

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) 

Heißt das, wie ein Fehler sehe ich dafür, dass meine Dateien wie diese bekommen würde? weil ich nur die jar-faselets.1.1.10.jar entfernt habe und jetzt bekomme ich diesen Fehler. Aber die App funktioniert gut b4 Ich entferne die Facelets Glas, also was ist die Beziehung zwischen diesen beiden Gläsern ??

Ich versuchte, die jstl.jar Zugabe, aber das funktioniert nicht, es zeigt mir nur dies:

it doesn't make sense to me

Antwort

2

Der Fehler vorschlagen jstl-1.2.jar available here im selben Ordner, in dem JSF enthalten Gläser sind.

Es besteht keine Notwendigkeit für facelets 2.0 Glas ist, weil JSF 2.0 facelets als Standardansicht Erklärung Language (VDL) angenommen, und jetzt ist es in JSF Gläser gebündelt (für beide MyFaces und Mojarra)

+0

Ich habe das Glas hinzugefügt, aber es ist komisch Es hat sich vorher nicht beschweren. Ich habe es hinzugefügt, und jetzt, wenn ich versuche, es auf dem Server zu starten, (es versuchte, index.xhtml zu öffnen) und ein Pop-up erscheint, fragt mich, ob ich die Datei öffnen oder speichern möchte? Ich habe das nie zuvor bekommen – Myy

0

Um dies zu lösen Problem, ich musste die jstl-impl.jar und jstl-api.jar hinzufügen und auf die neueste jsf-impl.jar und jsf-api.jar aktualisieren. Das hat es behoben.

Ich weiß nicht, warum es sich nie darüber beschwert hat, als die Facelets.1.10.jar da waren.

+0

Sie sollten nicht die JSP API/impl in Ihrer Webapp! Es ist der Servletcontainer selbst, der es bereitstellen soll. Ihre Webapplikation ist jetzt nicht mehr portierbar und funktioniert nur in dem gleichen Servletcontainer-Produkt/der gleichen Version, aus der diese JSP-Bibliotheken stammen. – BalusC

+0

nicht wahr? also muss ich sie dann entfernen? oder erzählst du mir das nicht? :( – Myy

+0

http://stackoverflow.com/questions/4441713/migrating-from-jsf-1-2-to-jsf-2-0/4532870#4532870 Sie sagen uns, jsf 2.0 Gläser in unserem WEB_INF, und seit Es funktioniert Ich nahm an, dass es richtig war ... was mache ich jetzt? – Myy

Verwandte Themen