Recipe12.2.Sharing Message Resources with JSTL


Recipe 12.2. Sharing Message Resources with JSTL

Problem

You want the JSTL formatting tags (fmt) tags to use the same MessageResources properties file used by Struts.

Solution

Set the value of the JSTL localization context parameter to your Struts MessageResources file, as shown in the partial web.xml file of Example 12-2.

Example 12-2. Setting the JSTL localization context
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"     "http://java.sun.com/dtd/web-app_2_3.dtd">      <web-app>     <context-param>               <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>         <param-value>path.to.MessageResources         </param-value>     </context-param> ...

Discussion

The JSP Standard Tag Library (JSTL) provides powerful tags for support of internationalization. The JSTL formatting tag library, referred to as the fmt tags, support many of the same internationalization features provided by the Struts tags and a lot more. You can configure JSTL to use the same MessageResources file you use in your Struts application. The JSTL tags rely on a default resource bundle of properties. You define this default resource bundle for your JSTL tags with a web application context parameter. Set the param-name to javax.servlet.jsp.jstl.fmt.localizationContext and the param-value to the same value as the parameter of the message-resources element in your struts-config.xml file.

If you use an alternate MessageResources file in your Struts applications, you can refer to those properties with the JSTL tags. You use the fmt:bundle or fmt:setBundle tag to specify the alternate properties file. The properties file must be on your classpath. Suppose your alternate resource bundle was defined in your struts-config.xml as follows:

<message-resources key="alt"     parameter="AlternateResources"> </message-resources>

You would display a message from this properties file with a Struts tag like this:

<bean:message bundle="alt" key="msg.hello" arg0="Bill"/>

To do the same with JSTL, you need to make the message resources available to the fmt:message tag with the fmt:setBundle tag. The fmt:setBundle tag establishes the resource bundle used on the remainder of the JSP page.

<fmt:setBundle basename="AlternateResources"> <fmt:message key="msg.hello">     <fmt:param value="Bill"/> </fmt:message>

Alternatively, you can nest the fmt:message tag within the fmt:bundle tag. The specified bundle only applies to the nested tags.

<fmt:bundle basename="AlternateResources">     <fmt:message key="msg.hello">         <fmt:param value="Bill"/>     </fmt:message>      </fmt:bundle>

See Also

JavaServer Pages by Hans Bergsten (O'Reilly) covers JSTL in great detail and is an invaluable source. Sun provides an excellent tutorial on JSTL that can be found at http://java.sun.com/tutorials/jstl.

You may want to read the JSTL specification. This well-written document provides a lot of insight to help you understand how and why JSTL works the way it does. This document and other related information can be downloaded from http://java.sun.com/products/jsp/jstl/.



    Jakarta Struts Cookbook
    Jakarta Struts Cookbook
    ISBN: 059600771X
    EAN: 2147483647
    Year: 2005
    Pages: 200

    flylib.com © 2008-2017.
    If you may any questions please contact us: flylib@qtcs.net