$BlogRSDURL$>
public final class LoginServlet extends HttpServlet {
...
public void execute(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
...
request.getSession().setAttribute(Constants.PREFERRED_LOCALE, request.getParameter("locale"));
...
}
}
public class ActionFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain)
throws IOException, ServletException {
...
if ((username != null) && (user == null)) {
...
String preferredLocale = session.getAttribute(Constants.PREFERRED_LOCALE).toString();
if (preferredLocale != null) {
if (preferredLocale "") {
if (user.getPreferredLocale() null) {
user.setPreferredLocale(Constants.DEFAULT_LOCALE);
}
} else {
user.setPreferredLocale(preferredLocale);
}
}
}
session.setAttribute(Constants.PREFERRED_LOCALE, user.getPreferredLocale());
}
}
public class LocaleFilter implements Filter {
private static final transient Log log = LogFactory.getLog(LocaleFilter.class);
public void init(FilterConfig filterConfig) {
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
HttpServletRequest servletRequest = (HttpServletRequest) request;
HttpSession session = servletRequest.getSession(false);
if (log.isDebugEnabled()) {
log.debug(servletRequest.getRequestURL());
}
Locale preferredLocale = null;
if (session!=null){
if (session.getAttribute(Constants.PREFERRED_LOCALE) != null) {
String localeKey = session.getAttribute(Constants.PREFERRED_LOCALE).toString();
if (localeKey != null) {
if (localeKey.equals("")) {
String[] keys = Constants.DEFAULT_LOCALE.split("-");
preferredLocale = new Locale(keys[0],keys[1]);
} else {
String[] keys = localeKey.split("-");
preferredLocale = new Locale(keys[0],keys[1]);
}
}
}
}
if (null != preferredLocale
&& !(request instanceof LocaleResponseWrapper)) {
request = new LocaleResponseWrapper(servletRequest, preferredLocale);
}
chain.doFilter(request, response);
}
}
public class LocaleResponseWrapper extends HttpServletRequestWrapper {
private final Locale preferredLocale;
private Enumeration locales;
public LocaleResponseWrapper(HttpServletRequest request, Locale sessionLocale) {
super(request);
preferredLocale = sessionLocale;
}
public Locale getLocale() {
if (null != preferredLocale) {
return preferredLocale;
} else {
return super.getLocale();
}
}
public Enumeration getLocales() {
if (null != preferredLocale) {
return setLocales();
} else {
return super.getLocales();
}
}
private Enumeration setLocales() {
if (null == locales) {
List l = Collections.list(super.getLocales());
l.add(0, preferredLocale);
locales = Collections.enumeration(l);
}
return locales;
}
}
<filter>
<filter-name>localeFilter</filter-name>
<display-name>Locale Filter</display-name>
<filter-class>org.appfuse.webapp.filter.LocaleFilter</filter-class>
</filter>
<fmt:setLocale value="${preferredLocale}" />
#
# DWR - https://dwr.dev.java.net/ (Direct Web Remoting)
#
dwr.version=1.0
dwr.dir=${lib.dir}/dwr-${dwr.version}
dwr.jar=${dwr.dir}/dwr.jar
<!-- Web -->
<path id="web.compile.classpath">
...
<pathelement location="${dwr.jar}"/>
</path>
<target name="package-web" depends="compile-web,jsp-2" description="Package WAR">
...
<war destfile="${webapp.dist}/${webapp.war}"
webxml="${webapp.target}/WEB-INF/web.xml" compress="true">
...
<lib file="${dwr.jar}"/>
</war>
</target>
<!-- dwr servlet -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<!-- dwr mapping -->
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<excludes>
<pattern>/dwr/*</pattern>
</excludes>
<dwr>
<allow>
<convert converter="bean" match="com.octasoft.fp.*"/>
<create creator="spring" javascript="userManager">
<param name="beanName" value="userManager"/>
<include method="getUser"/>
<include method="getUsers"/>
</create>
</allow>
</dwr>
<script src="/appfuse/dwr/engine.js" type="text/javascript"></script>
<script src="/appfuse/dwr/util.js" type="text/javascript"></script>
<script src="/appfuse/dwr/interface/userManager.js" type="text/javascript"></script>
<script>
DWREngine.setErrorHandler(doNothing);
var nickname = "";
function doNothing() {
return false;
}
function getNickname() {
if (nickname == "") {
userManager.getUser(popUser,document.loginForm.j_username.value);
document.loginForm.j_password.focus();
return false;
} else {
return validateForm( document.loginForm, false, true, true, false, 1)
}
}
var popUser = function(user) {
if (user == undefined) {
return false;
} else {
DWRUtil.setValue("nick", "Hello, " + user.nickName);
nickname = user.nickName;
}
}
</script>
<form method="post" name="loginForm" id="loginForm"
action="<c:url value="/authorize"/>" onsubmit="return getNickname();">
<div id="nick"></div>
<input name="j_username" type="text" id="j_username"/>
<input name="j_password" type="password" id="j_password"/>
</form>