February 2005
Intermediate to advanced
528 pages
12h 53m
English
You want your web application to use the same locale settings for all users, regardless of their browser's language setting. You also want the JSTL tags to honor this application-wide locale.
Use a servlet Filter to set the
Locale to the desired value (see Example 12-3). The Filter ensures that
the Locale is set for all web requests, and not
just those handled by Struts.
Example 12-3. Using a servlet filter to set the locale
package com.oreilly.strutsckbk.ch12; import java.io.IOException; import java.util.Locale; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.servlet.jsp.jstl.core.Config; import org.apache.struts.Globals; public class LocaleFilter implements Filter { // the locale code used to create the locale (e.g. en_US) private String localeCode; // indicates if the locale should always be set; // even if there is currently one in the session private boolean ignore = false; public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; localeCode = filterConfig.getInitParameter("locale"); override = Boolean.valueOf(filterConfig.getInitParameter("ignore")). booleanValue( ); } public ...