The Freemarker template is aware of the current locale so I can only guess that
it is automatically formatting the BigDecimal before presenting it as a string.
You can override this behavior by using ${orderItem.unitPrice?c} or by
specifying a specific format such as ${orderItem.unitPrice?string("0.###")}
here is the info on it:
http://freemarker.sourceforge.net/docs/ref_builtins_number.html
You are still calling the rendering a "problem" but as mentioned earlier this
is actually the desired default behavior, numbers should be rendered in a
locale specific format.
Regards
Scott
On 27/07/2010, at 9:51 AM, Ruth Hoffman wrote:
> Now that I have your attention:
>
> So what is really happening is that the value, if printed out without any
> formatting at all is displayed correctly. For example, lets say orderItems is
> a list with a single orderItem GenericValue where orderItem.unitPrice =
> 10.950 (that is the value as seen in the database).
>
> Then, in orderReview.ftl (9.04) and as passed to this template by a Groovy
> script, if I print this out like this:
> ${orderItem}
>
> The GenericValue returned is a display something like: BigDecimal:10.950. To
> me, this makes sense.
> -------
> OK, so far?
> Now, if I do this:
> ${orderItem.unitPrice}
> I'll get a value returned that looks something like: 10,95
>
> So, without even using the currency conversion, I'm stuck. Somewhere,
> somehow, OFBiz knows that "unitPrice" is a BigDecimal and is not converting
> it correctly when the locale is not English. "10.950" is not the same as
> "10,95". Now that I'm thinking about it, I don't think this is a currency
> issue at all. I think it is a BigDecimal conversion problem.
>
> So, back to my original question: Where is this done?
>
> Regards,
> Ruth
> Scott Gray wrote:
>> That's your question :-)
>>
>> Ruth's question was about how the decimal point became a comma.
>>
>> If I were dealing with the problem, I would worry less about what the string
>> looks like in any given locale and instead be worrying about why the locale
>> specific input parameter isn't being correctly converted back to a number.
>> I guess that's what you are alluding to as well Adrian.
>>
>> Regards
>> Scott
>>
>> On 27/07/2010, at 9:08 AM, Adrian Crum wrote:
>>
>>
>>> The question is: What happens when the user clicks the submit button? The
>>> request parameters are sent with numbers formatted according to the locale
>>> specified in the transform, and the framework will be expecting them to be
>>> formatted according to the user's locale.
>>>
>>> It's an interesting problem. Changing the conversion code is not the
>>> solution however.
>>>
>>> -Adrian
>>>
>>> On 7/26/2010 2:03 PM, Scott Gray wrote:
>>>
>>>> In freemarker we typically use the OfbizCurrencyTransform which takes a
>>>> Number and converts it to a locale specific string representation. The
>>>> transform will take an explicit locale as an argument if you need it to
>>>> e.g.<@ofbizCurrency locale="en" amount="10.00"/>
>>>>
>>>> Regards
>>>> Scott
>>>>
>>>> HotWax Media
>>>> http://www.hotwaxmedia.com
>>>>
>>>> On 27/07/2010, at 8:51 AM, Adrian Crum wrote:
>>>>
>>>>
>>>>> Ruth,
>>>>>
>>>>> Honey attracts flies better than vinegar.
>>>>>
>>>>> Why would I refuse to help you? I have been responding to all of your
>>>>> messages - trying to understand your environment and what you are trying
>>>>> to do.
>>>>>
>>>>> Now that we have determined the version you are using, and we have
>>>>> established that you are experiencing the intended behavior in that
>>>>> version, we can continue from there.
>>>>>
>>>>> If you attempt to disable the framework's localization, then you won't
>>>>> get to demonstrate the locale support. I believe what you are seeking is
>>>>> a context-specific disabling of the localization. In that case, you will
>>>>> have to examine each screen to find the segments that you want to
>>>>> disable, and then disable localization only in those screen segments.
>>>>>
>>>>> Check the Freemarker docs to see if there is a way to specify a locale in
>>>>> numeric-to-string conversions. I'll see if there is convenient way to do
>>>>> it in screen widgets.
>>>>>
>>>>> -Adrian
>>>>>
>>>>> On 7/26/2010 1:33 PM, Ruth Hoffman wrote:
>>>>>
>>>>>> Hi Adrian:
>>>>>> Thank you for your answer. However, I did not ask if this is correct. I
>>>>>> asked where this conversion is performed.
>>>>>>
>>>>>> If you could tell me where this happens you could save me lots of time.
>>>>>> But, since you either don't know or refuse to help me in this situation,
>>>>>> I simply will thank you.
>>>>>>
>>>>>> BTW, I'd I'm fully aware that I can disable the language selection
>>>>>> screen. I want to avoid that if possible since it is an excellent
>>>>>> example of OFBiz providing user/session sensitive locale support.
>>>>>>
>>>>>> Regards,
>>>>>> Ruth
>>>>>>
>>>>>> Adrian Crum wrote:
>>>>>>
>>>>>>> The framework is set up to display numbers and dates in the correct
>>>>>>> format based on the user's locale setting. So, the behavior you
>>>>>>> described is correct. If you don't want the user to select a locale
>>>>>>> other than US, then you can disable the locale selection screen.
>>>>>>>
>>>>>>> -Adrian
>>>>>>>
>>>>>>> On 7/26/2010 12:04 PM, Ruth Hoffman wrote:
>>>>>>>
>>>>>>>> Hi Adrian:
>>>>>>>>
>>>>>>>> svn info says revision 809901. I do believe it is 9.04.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Ruth
>>>>>>>>
>>>>>>>> Adrian Crum wrote:
>>>>>>>>
>>>>>>>>> So that would make it the 9.04 version?
>>>>>>>>>
>>>>>>>>> -Adrian
>>>>>>>>>
>>>>>>>>> On 7/26/2010 11:29 AM, Ruth Hoffman wrote:
>>>>>>>>>
>>>>>>>>>> Hi Adrian:
>>>>>>>>>> #809901 at least that is what svn info says it is.
>>>>>>>>>> Thanks
>>>>>>>>>> Ruth
>>>>>>>>>>
>>>>>>>>>> Adrian Crum wrote:
>>>>>>>>>>
>>>>>>>>>>> What OFBiz version are you using on your live eCommerce site?
>>>>>>>>>>>
>>>>>>>>>>> -Adrian
>>>>>>>>>>>
>>>>>>>>>>> On 7/26/2010 11:00 AM, Ruth Hoffman wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hello Developers:
>>>>>>>>>>>> I'm having a problem on my live eCommerce site where, when a user
>>>>>>>>>>>> selects any locale other than English, the BigDecimal value of the
>>>>>>>>>>>> order
>>>>>>>>>>>> item's price is not being converted correctly to a string. For
>>>>>>>>>>>> example a
>>>>>>>>>>>> Big Decimal value of "10.000" is getting displayed as "10,00" and
>>>>>>>>>>>> being
>>>>>>>>>>>> passed back in the form as "10,00". I'd like this value to be
>>>>>>>>>>>> "10.00" as
>>>>>>>>>>>> it is when the locale is set to English. I've spent most of the
>>>>>>>>>>>> morning
>>>>>>>>>>>> trying to figure out where this is converted done in the code, but
>>>>>>>>>>>> with
>>>>>>>>>>>> little success. Could someone who has worked on this please tell me
>>>>>>>>>>>> where to start looking?
>>>>>>>>>>>>
>>>>>>>>>>>> FYI - I tried replicating this on the 9.04 stable release demo site
>>>>>>>>>>>> but
>>>>>>>>>>>> screen rendering is really messed up so I can't seem to get to a
>>>>>>>>>>>> place
>>>>>>>>>>>> where I can create a final order to look and see what the values
>>>>>>>>>>>> being
>>>>>>>>>>>> passed back look like.
>>>>>>>>>>>>
>>>>>>>>>>>> TIA
>>>>>>>>>>>> Ruth
>>>>>>>>>>>>
>>>>>>>>>>>>
>>
>>
smime.p7s
Description: S/MIME cryptographic signature
