We currently display BigDecimal values in <s:textfield> tags in our jsps.
These values need to be formatted to display as currency values. Example:
"123.350000" should display as "123.35"
I extended the simple theme to create a currency theme using only the
text.ftl template file. I basically copied the text.ftl to
/template/currency and changed this line:

<#if parameters.nameValue??>
 value="<@s.property value="parameters.nameValue"/>"<#rt/>
</#if>

to this:
<#if parameters.nameValue??>
 value="<@s.property
value="%{getText('{0,number,#.00}',{parameters.nameValue})}"/>"<#rt/>
</#if>

This does not work and gives a template error like
 (WARNING: Parameters: Invalid chunk ignored.).

The extended theme by itself does work as this line works:
<#if parameters.nameValue??>
 value="<@s.property value="parameters.nameValue*5"/>"<#rt/>
</#if>
...which multiplies the bigdecimal value by 5 before displaying.

So can anyone let us know what is the best way to apply formatting in an
extended theme in a freemarker template? We also have some date values that
need formatting so will create another theme for that. I could add getText()
to each <s:textfield> tag explicitly but specifying a theme that handles the
formatting seems a lot cleaner. I have also tried freemarker formatting like
the one below with no success

${x?string("0.##")}

Any help or pointers would be much appreciated.

thanks
ash.

Reply via email to