[richfaces-issues] [JBoss JIRA] (RF-12343) Problem when saving form with rich picklist inside composite component

Brian Leathem (JIRA) jira-events at lists.jboss.org
Thu Aug 9 20:06:07 EDT 2012


     [ https://issues.jboss.org/browse/RF-12343?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Brian Leathem updated RF-12343:
-------------------------------

        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:

{code}
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)
{code}

Sample code:
{code}
...

<composite:attribute name="beanAndValue" />

...

<rich:pickList value="#{cc.attrs.beanAndValue}" ...
{code}

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 !

{code}
...

<composite:attribute name="beanAndValue" />

...

<h:selectOneMenu value="#{cc.attrs.beanAndValue}" ...
{code}

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 ?



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



    Forum Reference: https://community.jboss.org/message/644799  (was: https://community.jboss.org/message/644799)

    
> Problem when saving form with rich picklist inside composite component
> ----------------------------------------------------------------------
>
>                 Key: RF-12343
>                 URL: https://issues.jboss.org/browse/RF-12343
>             Project: RichFaces
>          Issue Type: Enhancement
>      Security Level: Public(Everyone can see) 
>          Components: component-selects
>    Affects Versions: 4.2.2.Final
>         Environment: Windows, FireFox13.0.1, Tomcat7.0.26, JSF2.1.7
>            Reporter: Christophe Roussy
>              Labels: composite_component, pickList
>
> 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:
> {code}
> 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)
> {code}
> Sample code:
> {code}
> ...
> <composite:attribute name="beanAndValue" />
> ...
> <rich:pickList value="#{cc.attrs.beanAndValue}" ...
> {code}
> 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 !
> {code}
> ...
> <composite:attribute name="beanAndValue" />
> ...
> <h:selectOneMenu value="#{cc.attrs.beanAndValue}" ...
> {code}
> 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 ?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the richfaces-issues mailing list