2015-03-19 3 views
-1
i am using RichFaces and jsf 2.but when i moved to facelets some of 
    the ich component doesnt works for me. i am using richfaces-api-3.3.4.Final.jar, 

    richfaces-impl-jsf2-3.3.4.Final.jar, 

    richfaces-ui-3.3.4.Final.jar. 

    tomcat version is 7.0.23 

    netbeans 7.3.1 

    i have configured the following details in web.xml 


    <web-app version="3.0" 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_3_0.xsd"> 

    <context-param> 
     <param-name>javax.faces.PROJECT_STAGE</param-name> 
     <param-value>Development</param-value> 
    </context-param> 

    <context-param> 
    <param-name> 
     facelets.RECREATE_VALUE_EXPRESSION_ON_BUILD_BEFORE_RESTORE 
    </param-name> 
    <param-value>false</param-value> 
    </context-param> 

    <context-param> 
    <param-name>javax.faces.FACELETS_VIEW_MAPPINGS</param-name> 
    <param-value>*.xhtml</param-value> 
</context-param> 

<context-param> 
    <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name> 
    <param-value>true</param-value> 
</context-param> 

<context-param> 
    <param-name>org.richfaces.SKIN</param-name> 
    <param-value>blueSky</param-value> 
</context-param> 
<!-- Making the RichFaces skin spread to standard HTML controls --> 
<context-param> 
    <param-name>org.richfaces.CONTROL_SKINNING</param-name> 
    <param-value>enable</param-value> 
</context-param> 

<filter> 
    <display-name>RichFaces Filter</display-name> 
    <filter-name>richfaces</filter-name> 
    <filter-class>org.ajax4jsf.Filter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>richfaces</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>INCLUDE</dispatcher> 
</filter-mapping> 

<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> 
</web-app> 

    faces-config.xml 

    <application> 
    <view-handler>org.ajax4jsf.application.AjaxViewHandler</view-handler> 
    </application> 

    index.xhtml 

    <?xml version="1.0" encoding="UTF-8"?> 
     <!-- 
     To change this template, choose Tools | Templates 
     and open the template in the editor. 
     --> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:rich="http://richfaces.org/rich" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 

    <ui:composition>  
    <h:form id="studentFormId" binding="#{StudentDetail.initForm}"> 
     <rich:panel id="Student" > 
      <f:facet name="header"> 
       <h:outputText value="Student DOB" /> 
    <rich:calender/> 
      </f:facet> 
    </rich:panel> 
    </h:form> 
    </ui:composition> 
    </html> 

    when i deploy after clean and build it shows the following error. 

      SEVERE: Exception sending context initialized event to listener instance of class com.sun.faces. 
    config.ConfigureListener java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: 

    CONFIGURATION FAILED! Must have aConstructor that takes in a ComponentConfig 

at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:273) 

at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4765) 

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5260) 

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 

at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:866) 

at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:842) 

    Caused by: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! Must have a 

    Constructor that takes in a ComponentConfig at com.sun.faces.config.ConfigManager 

.initialize(ConfigManager.java:449) at com.sun.faces.config.ConfigureListener 

.contextInitialized(ConfigureListener.java:214) 

... 43 more 


    Caused by: javax.faces.view.facelets.FaceletException: Must have a Constructor that takes in a 

    ComponentConfig at com.sun.faces.facelets.tag.AbstractTagLibrary$UserComponentHandlerFactory.<init> 

    (AbstractTagLibrary.java:330) 

at com.sun.faces.facelets.tag.AbstractTagLibrary.addComponent(AbstractTagLibrary.java:558) 

at com.sun.faces.facelets.tag.TagLibraryImpl.putComponent(TagLibraryImpl.java:114) 

at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processComponent(FaceletTaglibConfigProcessor.java:588) 

на com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTags (FaceletTaglibConfigProcessor.java:368) приRichFaces и Facelets комбинация не работает

com.sun.faces.config.processor.FaceletTaglibConfigProcessor. 
processTagLibrary(FaceletTaglibConfigProcessor.java:321) at 

com.sun.faces.config. processor.FaceletTaglibConfigProcessor. процесс (FaceletTaglibConfigProcessor.java:270)

at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:437) 
... 44 more 

    Caused by: java.lang.NoSuchMethodException: org.richfaces.taglib.AjaxValidatorHandler.<init> 

    (javax.faces.view.facelets.ComponentConfig) 

at java.lang.Class.getConstructor0(Class.java:2706) 

at java.lang.Class.getConstructor(Class.java:1657) 

at com.sun.faces.facelets.tag.AbstractTagLibrary$UserComponentHandlerFactory.<init>(AbstractTagLibrary.java:328) 

... 51 more 


    can anybody find what mistake i have done here? thanks in advance.. 
+0

Для Tomcat 7 и JSF 2 ваша версия RichFaces слишком старая. Для этой комбинации рекомендуется использовать RichFaces 4.x. Попробуйте версию Tomcat 6 с RichFaces 3.3 (по моему опыту она успешно сработала). –

+0

ok vasil В настоящее время я использую много компонентов из RichFaces 3.3.4, если я перехожу к Richfaces 4, тогда у него есть все компоненты, такие как Rich faces версии 3.3.4? – Santhanam

+0

Не совсем, некоторые компоненты, такие как Google Map, отсутствуют. Но мигрированные компоненты работают нормально. Кроме того, есть несколько новых компонентов. Примечание: ваш код содержит ошибку - 'rich: calender' - неправильный синтаксис (у RichFaces есть компонент календаря). Не связано с вопросом: если вы начинаете новый проект, вы можете попробовать PrimeFaces (у него больше компонентов и более высокая поддержка, чем RichFaces). –

ответ

1

RichFaces 3.х и JSF 2 работает нормально. Я использую JSF 2.2 и RichFaces 3.3.4.Final.

Вам необходимо отключить встроенные фреймы JSF 2 и добавить зависимость от старых jsf-facelets 1.1.15 (согласно https://developer.jboss.org/wiki/RichFaces333andJSF20).

Однако имейте в виду, что Mojarra имеет bug, когда он ищет DISABLE_FACELET_JSF_VIEWHANDLER вместо javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER согласно спецификации.

+0

Я бы никогда не предложил использовать старую версию faceletes с новыми версиями jsf. Если вы столкнулись с проблемами, сложно найти исправление. – Kukeltje

+1

Я ничего не предлагал. У @Santhanam была проблема, и я опубликовал решение своей проблемы, надеясь, что это поможет ему (несмотря на то, что вопрос один месяц) и другие люди, которые, как и мы, вынуждены использовать эту комбинацию библиотек из-за обстоятельств. –

+0

Большое спасибо за Kukeltje и Art Fedorychak. В настоящее время я переезжаю в PrimeFaces. – Santhanam

Смежные вопросы