]
Brian Leathem resolved RF-12343.
--------------------------------
Fix Version/s: 4.2-Tracking
Resolution: Done
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
Assignee: Brian Leathem
Labels: composite_component, pickList
Fix For: 4.2-Tracking, 4.3.0.Milestone2
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
For more information on JIRA, see: