Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Tapestry Wiki" for 
change notification.

The following page has been changed by SebastianHennebrueder:
http://wiki.apache.org/tapestry/Tapestry5HowToFormatDateTimeEtc

New page:
This page describes how to format Date, Time, Floats, Strings, currencies etc 
using standard components and extensions.
== Page class ==
The page class provides the following properties:
{{{
        public Date getDateProperty() {
                return new Date();
        }

        public double getCurrencyValue() {
                return 2.2;
        }

        public String getCurrency() {
                return "EUR";
        }
}}}

== Output of Date, Time or DateTime ==
The output component of Tapestry uses java.text.Format to format a value.
=== Using a literal ==
{{{
<t:output format="literal:MMM yyyy" value="dateProperty"/>
}}}
Output result: Feb 2009
=== Using a resource bundle entry ===
The following approach allows to format a date adapted to the users local.
{{{
<t:output format="message:month_year" value="dateProperty"/>
}}}
The format String is picked from the resource bundle.
Extract of the resource bundle (for example app.properties)
{{{
month_year=MMM YYYY
}}}
Output result: Feb 2009
=== Using a String.format expression ===
In order to achieve this, we need to add a new binding expressions. This is 
explained on the following page.
Tapestry5HowToAddMessageFormatBindingPrefix - Creating a binding expression 
using String.format]

${format:common_month_year=dateProperty}
''common_month_year'' is an entry of the resource bundle
Extract of the resource bundle (for example app.properties)
{{{
common_month_year=%1$tb %1$tY
}}}
Output result: Feb 2009

== Formatting of numbers ==
=== Tapestry's output component ===
The default output component has limitations for number formatting. In order to 
format a decimal you need to pass an instance of DecimalFormat to the component.
First provide the method in the class
{{{
 public DecimalFormat getCurrencyFormat(){
  return new DecimalFormat("0.00");
 }

}}}
Usage
{{{
<t:output format="numberFormat" value="currencyValue"/>
}}}
There is an extension to this component, allowing a simple definition of 
formats.

Tapestry5OutputLocaleNumber - Localized output component

=== Using a String.format expression ===
In order to achieve this, we need to add a new binding expressions. This is 
explained on the following page.
Tapestry5HowToAddMessageFormatBindingPrefix - Creating a binding expression 
using String.format
{{{
${format:twodigit=currencyValue,currency}
}}}
''twodigit'' is an entry of the resource bundle
Extract of the resource bundle (for example app.properties)
{{{
twodigit=%.2f
}}}
Output result: 2.20
== Other formatting ==
The binding extension Tapestry5HowToAddMessageFormatBindingPrefix uses 
String.format. It supports all kinds of formattings and can even pass multiple 
values to the formatting String.
Sample to format a currency: 2.20 EUR
Resource bundle entry
{{{
currency=%.2f %s
}}}
Usage
{{{
${format:currency=currencyValue,currency}
}}}

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to