No, you may be right. I haven't tested it, but your list should contain 
GenericValue objects that implement the Map interface and can be treated as 
Maps, and the list-options tag should accept those fine. Somewhere, either in 
the query/find operation or in the list-options iterating something is breaking 
this, and while I don't know if it is the conversion stuff or not it could be.

The best bet is to make it easy for others to reproduce it, perhaps by creating 
an issue that has a patch and instructions for applying and running it. It's 
great that you've nailed it down to where reverting to a certain revision makes 
it work, that should be useful for tracking down the cause of this.

-David


On Feb 17, 2010, at 5:51 PM, Jacques Le Roux wrote:

> Yes, actually it's a List of GenericValues returned by 
> CommonWorkers.getAssociatedStateList()
> 
> The problem is that this was working at r909312. I call this a regression, 
> maybe it was wrong  in the middle before, but it worked.
> 
> Jacques
> 
> From: "David E Jones" <d...@me.com>
>> 
>> Jacques,
>> 
>> It looks like the list you are trying to use in the drop-down contains 
>> something other than a Map.
>> 
>> -David
>> 
>> 
>> On Feb 17, 2010, at 5:03 PM, Jacques Le Roux wrote:
>> 
>>> Missed the more important part, here it is
>>> 
>>> ---- cause 
>>> ---------------------------------------------------------------------
>>> Exception: java.lang.ClassCastException
>>> Message: Not a map
>>> ---- stack trace 
>>> ---------------------------------------------------------------
>>> java.lang.ClassCastException: Not a map
>>> org.ofbiz.base.util.UtilGenerics.checkMap(UtilGenerics.java:77)
>>> org.ofbiz.widget.form.ModelFormField$ListOptions.addOptionValues(ModelFormField.java:1648)
>>> org.ofbiz.widget.form.ModelFormField$FieldInfoWithOptions.getAllOptionValues(ModelFormField.java:1529)
>>> org.ofbiz.widget.form.MacroFormRenderer.renderDropDownField(MacroFormRenderer.java:666)
>>> org.ofbiz.widget.form.ModelFormField$DropDownField.renderFieldString(ModelFormField.java:3043)
>>> org.ofbiz.widget.form.ModelFormField.renderFieldString(ModelFormField.java:595)
>>> org.ofbiz.widget.form.ModelForm.renderSingleFormString(ModelForm.java:1054)
>>> org.ofbiz.widget.form.ModelForm.renderFormString(ModelForm.java:837)
>>> org.ofbiz.widget.screen.ModelScreenWidget$Form.renderWidgetString(ModelScreenWidget.java:841)
>>> org.ofbiz.widget.screen.MacroScreenRenderer.renderScreenletSubWidget(MacroScreenRenderer.java:704)
>>> org.ofbiz.widget.screen.ModelScreenWidget$Screenlet.renderWidgetString(ModelScreenWidget.java:408)
>>> org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
>>> org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSection.renderWidgetString(ModelScreenWidget.java:704)
>>> org.ofbiz.widget.screen.ModelScreenWidget$SectionsRenderer.render(ModelScreenWidget.java:167)
>>> org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSectionInclude.renderWidgetString(ModelScreenWidget.java:736)
>>> org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
>>> org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
>>> org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
>>> org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSection.renderWidgetString(ModelScreenWidget.java:704)
>>> org.ofbiz.widget.screen.ModelScreenWidget$SectionsRenderer.render(ModelScreenWidget.java:167)
>>> org.ofbiz.widget.screen.ModelScreenWidget$DecoratorSectionInclude.renderWidgetString(ModelScreenWidget.java:736)
>>> org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
>>> org.ofbiz.widget.screen.ModelScreenWidget$Container.renderWidgetString(ModelScreenWidget.java:296)
>>> org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
>>> org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
>>> org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:394)
>>> org.ofbiz.widget.screen.ModelScreenWidget$IncludeScreen.renderWidgetString(ModelScreenWidget.java:576)
>>> org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
>>> org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
>>> org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:394)
>>> org.ofbiz.widget.screen.ModelScreenWidget$DecoratorScreen.renderWidgetString(ModelScreenWidget.java:672)
>>> org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
>>> org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
>>> org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:394)
>>> org.ofbiz.widget.screen.ModelScreenWidget$DecoratorScreen.renderWidgetString(ModelScreenWidget.java:672)
>>> org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
>>> org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
>>> org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:394)
>>> 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:835)
>>> org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:554)
>>> org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:223)
>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>>> 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:266)
>>> 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:175)
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>> 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:568)
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>>> java.lang.Thread.run(Thread.java:619)
>>> --------------------------------------------------------------------------------
>>> 
>>> Jacques
>>> 
>>> From: "Jacques Le Roux" <jacques.le.r...@les7arts.com>
>>>> I did not reproduce with the lists used in the trunk OOTB (I tried Party 
>>>> Roles and Invoice Items)
>>>> But I can reproduce at r911227
>>>> 
>>>> I create a states list using (for instance)
>>>> <set field="states" value="${groovy: postalAddress?.countryGeoId ? 
>>>> org.ofbiz.common.CommonWorkers.getAssociatedStateList(delegator,
>>>> postalAddress.countryGeoId) : 
>>>> org.ofbiz.common.CommonWorkers.getAssociatedStateList(delegator, null)}" 
>>>> type="List"/>
>>>> 
>>>> and I use it in (slightly changed for custom labels)
>>>> 
>>>>      <field use-when="states!=null" name="stateProvinceGeoId" 
>>>> title="${uiLabelMap.StateWithSpacesPrefix}"
>>>> tooltip="${uiLabelMap.Required}" widget-style="required">
>>>>          <drop-down allow-empty="false">
>>>>              <list-options list-name="states" key-name="geoId" 
>>>> description="${geoName}"/>
>>>>          </drop-down>
>>>>      </field>
>>>> 
>>>> I get
>>>> 
>>>> 2010-02-18 00:58:04,734 (http-0.0.0.0-8443-4) [        
>>>> ModelScreen.java:399:ERROR] Error rendering screen
>>>> [component://common/widget/CommonScreens.xml#GlobalDecorator]: 
>>>> java.lang.ClassCastException: Not a map
>>>> . Rolling back transaction.
>>>> 2010-02-18 00:58:04,734 (http-0.0.0.0-8443-4) [    
>>>> TransactionUtil.java:372:WARN ]
>>>> ---- exception report 
>>>> ----------------------------------------------------------
>>>> [TransactionUtil.setRollbackOnly] Calling transaction setRollbackOnly; 
>>>> this stack trace shows where this is happening:
>>>> Exception: java.lang.Exception
>>>> Message: Error rendering screen 
>>>> [component://common/widget/CommonScreens.xml#GlobalDecorator]: 
>>>> java.lang.ClassCastException: Not a
>>>> map
>>>> ---- stack trace 
>>>> ---------------------------------------------------------------
>>>> java.lang.Exception: Error rendering screen 
>>>> [component://common/widget/CommonScreens.xml#GlobalDecorator]:
>>>> java.lang.ClassCastException: Not a map
>>>> org.ofbiz.entity.transaction.TransactionUtil.setRollbackOnly(TransactionUtil.java:372)
>>>> org.ofbiz.entity.transaction.TransactionUtil.rollback(TransactionUtil.java:319)
>>>> org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:402)
>>>> org.ofbiz.widget.screen.ModelScreenWidget$IncludeScreen.renderWidgetString(ModelScreenWidget.java:576)
>>>> org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
>>>> org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
>>>> org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:394)
>>>> org.ofbiz.widget.screen.ModelScreenWidget$DecoratorScreen.renderWidgetString(ModelScreenWidget.java:672)
>>>> org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
>>>> org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
>>>> org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:394)
>>>> org.ofbiz.widget.screen.ModelScreenWidget$DecoratorScreen.renderWidgetString(ModelScreenWidget.java:672)
>>>> org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:137)
>>>> org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:228)
>>>> org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:394)
>>>> 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:835)
>>>> org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:554)
>>>> org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:223)
>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>>>> 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:266)
>>>> 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:175)
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>>> 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:568)
>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>>>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>>>> java.lang.Thread.run(Thread.java:619)
>>>> 
>>>> HTH (I can't do more right now)
>>>> 
>>>> Jacques
>>>> 
>>>> From: "Jacques Le Roux" <jacques.le.r...@les7arts.com>
>>>>> I'm workin on it :/
>>>>> 
>>>>> Just a little annoying as it's past midnight here and my wife will be 
>>>>> waiting me tomorrow morning for our 4 vacation days she is
>>>>> waiting for so long... Life...
>>>>> 
>>>>> Jacques
>>>>> 
>>>>> From: "Adam Heath" <doo...@brainfood.com>
>>>>>> Jacques Le Roux wrote:
>>>>>>> Hi,
>>>>>>> 
>>>>>>> I have a problem with the recent converter changes I guess. In a custom
>>>>>>> application where I use a <list-options  I get an error
>>>>>>> saying it's not a Map.
>>>>>>> 
>>>>>>> This is woirking if I revert to r909312. I will try to reproduce on a
>>>>>>> local update instance, I'm quite sure it's reproductible in the trunk
>>>>>>> 
>>>>>>> Unfortunately I can't help much on this right now as I will be in
>>>>>>> vacation for 4 days begining tonigh and it's already rather late here.
>>>>>> 
>>>>>> It would be nice to have more info on this, like at the very least
>>>>>> what actual version you were running, not just one that happened to
>>>>>> work for you.
>>>>>> 
>>>>>> For reference, there was a point where I changed how the converters
>>>>>> worked, to be different than what Adrian initially designed.  Last
>>>>>> week, I ended up undoing most of those modifications, and implemented
>>>>>> my features in a different way, that shouldn't affect anyone else.
>>>>>> 
>>>>> 
>>>>> 
>>> 
>>> 
> 
> 

Reply via email to