12.3. Using an Application-Wide Locale

Problem

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.

Solution

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 ...

Get Jakarta Struts Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.