Download FAQ History |  | API Search Feedback

> ## Internationalization Tags

> Chapter 23 covers how to design Web applications so that they conform to the language and formatting conventions of client locales. This section describes tags that support the internationalization of JSP pages.

> JSTL defines tags for: setting the locale for a page, creating locale-sensitive messages, and formatting and parsing data elements such as numbers, currencies, dates, and times in a locale-sensitive or customized manner. Table 17-6 lists the tags.

> Table 17-6 Internationalization Tags
> Area | Function | Tags | Prefix
> --- | --- | --- | ---
> I18n | Setting Locale | `setLocale` `requestEncoding` | `fmt`
> Messaging | `bundle` `message` `param` `setBundle`
> Number and Date Formatting | `formatNumber` `formatDate` `parseDate` `parseNumber` `setTimeZone` `timeZone`

> JSTL i18n tags use a localization context to localize their data. A localization context contains a locale and a resource bundle instance. To specify the localization context, you define the context parameter `javax.servlet.jsp.jstl.fmt.localizationContext`, whose value can be a `javax.servlet.jsp.jstl.fmt.LocalizationContext` or a `String`. A `String` context parameter is interpreted as the name of a resource bundle basename. For the Duke's Bookstore application, the context parameter is the `String` `messages.BookstoreMessages`, which is set with `deploytool` in the Context tab of the WAR inspector. This setting can be overridden in a JSP page by using the JSTL `fmt:setBundle` tag. When a request is received, JSTL automatically sets the locale based on the value retrieved from the request header and chooses the correct resource bundle using the basename specified in the context parameter.

> ### Setting the Locale

> The `setLocale` tag is used to override the client-specified locale for a page. The `requestEncoding` tag is used to set the request's character encoding, in order to be able to correctly decode request parameter values whose encoding is different from `ISO-8859-1`.

> ### Messaging Tags

> By default, browser-sensing capabilities for locales are enabled. This means that the client determines (via its browser settings) which locale to use, and allows page authors to cater to the language preferences of their clients.

> #### bundle Tag

> You use the `bundle` tag to specify a resource bundle for a page.

> To define a resource bundle for a Web application you specify the context parameter `javax.servlet.jsp.jstl.fmt.localizationContext` in the Web application deployment descriptor.

> #### message Tag

> The `message` tag is used to output localized strings. The following tag from `bookcatalog.jsp`

>     <h3><fmt:message key="Choose"/></h3>

> is used to output a string inviting customers to choose a book from the catalog.

> The `param` subtag provides a single argument (for parametric replacement) to the compound message or pattern in its parent `message` tag. One `param` tag must be specified for each variable in the compound message or pattern. Parametric replacement takes place in the order of the `param` tags.

> ### Formatting Tags

> JSTL provides a set of tags for parsing and formatting locale-sensitive numbers and dates.

> The `formatNumber` tag is used to output localized numbers. The following tag from `bookshowcart.jsp`

>     <fmt:formatNumber value="${book.price}" type="currency"/>

> is used to display a localized price for a book. Note that since the price is maintained in the database in dollars, the localization is somewhat simplistic, because the `formatNumber` tag is unaware of exchange rates. The tag formats currencies but does not convert them.

> Analogous tags for formatting dates (`formatDate`), and parsing numbers and dates (`parseNumber`, `parseDate`) are also available. The `timeZone` tag establishes the time zone (specified via the `value` attribute) to be used by any nested `formatDate` tags.

> In `bookreceipt.jsp`, a "pretend" ship date is created and then formatted with the `formatDate` tag:

>     <jsp:useBean id="now" class="java.util.Date" />
>     <jsp:setProperty name="now" property="time"
>       value="${now.time + 432000000}" />
>     <fmt:message key="ShipDate"/>
>     <fmt:formatDate value="${now}" type="date"
>       dateStyle="full"/>.

Download FAQ History |  | API Search Feedback

All of the material in The Java(TM) Web Services Tutorial is copyright-protected and may not be published in other works without express written permission from Sun Microsystems.