Brett,

In the past, the OFBiz scripting languages (screen widgets and minilang) used a 
home-grown expression parser that only recognized and manipulated strings. We 
have converted the home-grown expression parser over to the Unified Expression 
Language so that more powerful expressions can be used. So, you have to look at 
it from an expression standpoint, not a Map or database or String standpoint.

Identifiers in UEL expressions must follow Java naming conventions. Your 
example:

<set field="passedVal" 
from-field="someMap.${surveyResponseOptionAnswer.surveyOptionSeqId}"/>

which evaluates to:

<set field="passedVal" from-field="someMap.000"/>

would be similar to:

String passedVal = someObject.000;

in Java. Try creating a class property in Java named "000" - it won't let you.

The benefit of using the UEL is we can create expressions like:

<set field="extendedCost" value="${orderItem.cost * orderItem.quantity}"/>

which is something we couldn't do before.

-Adrian


--- On Tue, 1/20/09, Brett Palmer <[email protected]> wrote:

> From: Brett Palmer <[email protected]>
> Subject: Re: New Syntax to preserve String for 000 value using FlexibleString 
>  expander
> To: [email protected]
> Date: Tuesday, January 20, 2009, 9:47 PM
> Adrian,
> 
> Thanks for the reply.
> 
> Is there a reason we default to converting from a String to
> a Long?  The
> example I gave is reading records from a VARCHAR field in a
> database.  It
> seems like that should be a String be default.  I'm
> probably not
> understanding the benefit for the automatic cast.
> 
> 
> Brett
> 
> On Tue, Jan 20, 2009 at 12:06 PM, Adrian Crum
> <[email protected]> wrote:
> 
> > Try
> >
> > <Set field="passedVal">
> >
> from-field="someMap._${surveyResponseOptionAnswer.surveyOptionSeqId}"/>
> >
> > or
> >
> > <Set field="passedVal">
> from-field="someMap["_" +
> >
> surveyResponseOptionAnswer.surveyOptionSeqId]"/>
> >
> > The idea is to make the key something other than
> numeric.
> >
> > If keys like "_000" cause a problem
> elsewhere in the code, then try
> >
> > <Set field="passedVal">
> >
> from-field="someMap[str:toString(surveyResponseOptionAnswer.surveyOptionSeqId)]"/>
> >
> > -Adrian
> >
> >
> >
> > Brett Palmer wrote:
> >
> >> Here is an example:
> >>
> >> <Set field="passedVal"
> >>
> from-field="someMap.${surveyResponseOptionAnswer.surveyOptionSeqId}"
> >> />
> >>
> >>
> >> Where surveyOptionSeqId is 000 but translates to
> 0.  Then doesn't
> >> match the key value in the map.
> >>
> >> Brett
> >>
> >>
> >> On 1/20/09, Adrian Crum <[email protected]>
> wrote:
> >>
> >>> Brett,
> >>>
> >>> Could you provide a code snippet?
> >>>
> >>> -Adrian
> >>>
> >>> Brett Palmer wrote:
> >>>
> >>>> I saw some posts on this earlier but not
> sure of the exact syntax.  We
> >>>> have
> >>>> some SimpleMethod that use index keys like
> "000", "001", etc.  This are
> >>>> being converted to longs and no longer
> work in our Maps.  What is the
> >>>> SimpleMethod syntax to preserve the String
> value "000" instead of
> >>>> changes
> >>>> to
> >>>> a long.
> >>>>
> >>>>
> >>>> Brett
> >>>>
> >>>>
> >>


      

Reply via email to