I'm trying to update an application from a very old version of the framework and I'm believe I am down to one issue. I have a field in a search form where allow-multiple is set to true as follows:
<field name="option_op"><hidden value="in" /></field> <field name="option" title="Option" widget-style="selectBox"> <drop-down allow-empty="true" allow-multiple="true"> <list-options list-name="optionsList" key-name="optionId" description="${optionDesc}"/> </drop-down> </field> This currently works if I select nothing in the UI (retrieve all rows) or select multiple options from the selectBox. If I select just one option, the framework throws an exception. Stack trace below. Anyone have a fix for this? Or a suggestion? <Other than my kludge of adding javascript for onsubmit to add a bogus selected option to the selectBox when only one choice is selected by the user.> Exception: org.ofbiz.service.GenericServiceException Message: Service [executeFind] target threw an unexpected exception (java.lang.String cannot be cast to java.util.Collection) ---- cause --------------------------------------------------------------------- Exception: java.lang.ClassCastException Message: java.lang.String cannot be cast to java.util.Collection ---- stack trace --------------------------------------------------------------- java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Collection org.ofbiz.entity.condition.EntityOperator$7.makeRHSWhereStringValue(EntityOperator.java:160) org.ofbiz.entity.condition.EntityComparisonOperator.makeRHSWhereString(EntityComparisonOperator.java:116) org.ofbiz.entity.condition.EntityComparisonOperator.addSqlValue(EntityComparisonOperator.java:105) org.ofbiz.entity.condition.EntityExpr.makeWhereString(EntityExpr.java:139) org.ofbiz.entity.condition.EntityJoinOperator.addSqlValue(EntityJoinOperator.java:78) org.ofbiz.entity.condition.EntityConditionListBase.makeWhereString(EntityConditionListBase.java:98) org.ofbiz.entity.condition.EntityJoinOperator.addSqlValue(EntityJoinOperator.java:78) org.ofbiz.entity.condition.EntityConditionListBase.makeWhereString(EntityConditionListBase.java:98) org.ofbiz.entity.datasource.GenericDAO.makeConditionWhereString(GenericDAO.java:836) org.ofbiz.entity.datasource.GenericDAO.selectListIteratorByCondition(GenericDAO.java:743) org.ofbiz.entity.datasource.GenericHelperDAO.findListIteratorByCondition(GenericHelperDAO.java:145) org.ofbiz.entity.GenericDelegator.find(GenericDelegator.java:1743) org.ofbiz.common.FindServices.executeFind(FindServices.java:614) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.ofbiz.service.engine.StandardJavaEngine.serviceInvoker(StandardJavaEngine.java:100) org.ofbiz.service.engine.StandardJavaEngine.runSync(StandardJavaEngine.java:57) org.ofbiz.service.ModelServiceReader$GenericInvokerImpl.runSync(ModelServiceReader.java:761) _$gen.file_58$.opt.ofbiz.framework.common.servicedef.services_46$xml_35$executeFind.runSync(file:/opt/ofbiz/framework/common/servicedef/services.xml#executeFind:229) org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:399) org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:226) org.ofbiz.service.GenericDispatcher.runSync(GenericDispatcher.java:163) org.ofbiz.common.FindServices.performFind(FindServices.java:499) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.ofbiz.service.engine.StandardJavaEngine.serviceInvoker(StandardJavaEngine.java:100) org.ofbiz.service.engine.StandardJavaEngine.runSync(StandardJavaEngine.java:57) org.ofbiz.service.ModelServiceReader$GenericInvokerImpl.runSync(ModelServiceReader.java:761) _$gen.file_58$.opt.ofbiz.framework.common.servicedef.services_46$xml_35$performFind.runSync(file:/opt/ofbiz/framework/common/servicedef/services.xml#performFind:242) org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:399) org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:226) org.ofbiz.service.GenericDispatcher.runSync(GenericDispatcher.java:163) org.ofbiz.widget.form.ModelFormAction$Service.runAction(ModelFormAction.java:387) org.ofbiz.widget.form.ModelFormAction.runSubActions(ModelFormAction.java:108) org.ofbiz.widget.form.ModelForm.runFormActions(ModelForm.java:786) org.ofbiz.widget.form.ModelForm.renderFormString(ModelForm.java:819) org.ofbiz.widget.screen.ModelScreenWidget$Form.renderWidgetString(ModelScreenWidget.java:753) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSection.renderWidgetString(ModelScreenWidget.java:613) org.ofbiz.widget.screen.ModelScreenWidget$SectionsRenderer.render(ModelScreenWidget.java:129) org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSectionInclude.renderWidgetString(ModelScreenWidget.java:646) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$Container.renderWidgetString(ModelScreenWidget.java:260) org.ofbiz.widget.screen.MacroScreenRenderer.renderScreenletSubWidget(MacroScreenRenderer.java:663) org.ofbiz.widget.screen.ModelScreenWidget$Screenlet.renderWidgetString(ModelScreenWidget.java:373) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:191) org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396) org.ofbiz.widget.screen.ScreenFactory.renderReferencedScreen(ScreenFactory.java:216) org.ofbiz.widget.screen.ModelScreenWidget$DecoratorScreen.renderWidgetString(ModelScreenWidget.java:580) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:191) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSection.renderWidgetString(ModelScreenWidget.java:613) org.ofbiz.widget.screen.ModelScreenWidget$SectionsRenderer.render(ModelScreenWidget.java:129) org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSectionInclude.renderWidgetString(ModelScreenWidget.java:646) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:191) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSection.renderWidgetString(ModelScreenWidget.java:613) org.ofbiz.widget.screen.ModelScreenWidget$SectionsRenderer.render(ModelScreenWidget.java:129) org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSectionInclude.renderWidgetString(ModelScreenWidget.java:646) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$Container.renderWidgetString(ModelScreenWidget.java:260) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:191) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$Container.renderWidgetString(ModelScreenWidget.java:260) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$Container.renderWidgetString(ModelScreenWidget.java:260) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:191) org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396) org.ofbiz.widget.screen.ScreenFactory.renderReferencedScreen(ScreenFactory.java:216) org.ofbiz.widget.screen.ModelScreenWidget$IncludeScreen.renderWidgetString(ModelScreenWidget.java:513) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:191) org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396) org.ofbiz.widget.screen.ScreenFactory.renderReferencedScreen(ScreenFactory.java:216) org.ofbiz.widget.screen.ModelScreenWidget$DecoratorScreen.renderWidgetString(ModelScreenWidget.java:580) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:191) org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396) org.ofbiz.widget.screen.ScreenFactory.renderReferencedScreen(ScreenFactory.java:216) org.ofbiz.widget.screen.ModelScreenWidget$DecoratorScreen.renderWidgetString(ModelScreenWidget.java:580) org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:191) org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396) org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:135) org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:97) org.ofbiz.widget.screen.MacroScreenViewHandler.render(MacroScreenViewHandler.java:104) org.ofbiz.webapp.control.RequestHandler.renderView(RequestHandler.java:852) org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:569) org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:224) org.ofbiz.webapp.control.ControlServlet.doPost(ControlServlet.java:87) javax.servlet.http.HttpServlet.service(HttpServlet.java:637) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:336) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:589) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291) org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776) org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705) org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898) org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) java.lang.Thread.run(Thread.java:662)