Uploaded image for project: 'RichFaces'
  1. RichFaces
  2. RF-12343

Problem when saving form with rich picklist inside composite component

    Details

      Description

      I have trouble passing a list to a rich picklist value which is located inside a composite component, my value is an ArrayList.
      My bean is in viewscope.

      The problem occurs while submitting the form:

      javax.faces.FacesException: ModelType (class java.lang.Object) must be either an Array, or a Collection
       
          at org.richfaces.renderkit.SelectManyHelper.getConvertedValue(SelectManyHelper.java:332)
       
          at org.richfaces.renderkit.SelectManyRendererBase.getConvertedValue(SelectManyRendererBase.java:108)
       
          at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030)
       
          at javax.faces.component.UIInput.validate(UIInput.java:960)
       
          at javax.faces.component.UIInput.executeValidate(UIInput.java:1233)
       
          at javax.faces.component.UIInput.processValidators(UIInput.java:698)
       
          at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
       
          at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
       
          at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
       
          at javax.faces.component.UIForm.processValidators(UIForm.java:253)
       
          at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
       
          at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
       
          at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
       
          at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
       
          at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1172)
       
          at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
       
          at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
       
          at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
       
          at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
       
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
       
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
       
          at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145)
       
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
       
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
       
          at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
       
          at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471)
       
          at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
       
          at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
       
          at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:137)
       
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
       
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
       
          at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
       
          at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
       
          at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
       
          at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
       
          at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
       
          at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
       
          at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
       
          at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403)
       
          at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301)
       
          at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162)
       
          at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
       
          at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
       
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
       
          at java.lang.Thread.run(Thread.java:662)
      

      Sample code:

      ...
       
      <composite:attribute name="beanAndValue" />
       
      ...
       
      <rich:pickList value="#{cc.attrs.beanAndValue}" ...
      

      I tried adding a type java.util.Collection, or java.util.List, but this had no effect.

      Note that it works when the picklist is outside of the composite component.

      It also works with an h:selectOneMenu works with similar code:

      I have NO trouble passing a list to the value of h:selectOneMenu !

      ...
       
      <composite:attribute name="beanAndValue" />
       
      ...
       
      <h:selectOneMenu value="#{cc.attrs.beanAndValue}" ...
      

      As this works outside the composite component and with similar components (selectOneMenu), I assume that the rich:pickList is not easy to integrate with composite components for some type issue, maybe the type gets lost and the picklist is very strict about it ?

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  bleathem Brian Leathem
                  Reporter:
                  christophe2 Christophe Roussy
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  3 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: