This content has been marked as final.
Show 1 reply
-
1. Re: Layout I18N: wrong locale in JSP
halversp Jan 19, 2007 12:50 PM (in response to halversp)For now, I've defined a custom PortalLayout class which passes the correct locale to the JSP (using an HttpServletRequestWrapper), and specify this class in my layouts file using the (undocumentated) "layout-implementation" attribute. Seems to work. Still unclear on the rationale for passing the original client request down.
ppublic class LocalizingLayoutImpl extends PortalLayout { public void assembleResponse(ServerRequest request, ServerResponse response, MarkupResult markupResult) throws ServletException, IOException { HttpServletRequest httpRequest = request.getContext().getClientRequest(); HttpServletResponse httpResponse = response.getContext().getClientResponse(); RenderContext renderCtx = getRenderContext(response.getStreamInfo(), request, markupResult); LayoutDispatcher dispatcher = new LayoutDispatcher(renderCtx, new LocalizedRequest(httpRequest, request), httpResponse, markupResult); dispatcher.include(); } private class LocalizedRequest extends HttpServletRequestWrapper { private ServerRequest serverRequest; public LocalizedRequest(HttpServletRequest request, ServerRequest serverRequest) { super(request); this.serverRequest = serverRequest; } @Override public Locale getLocale() { Locale locale = serverRequest.getLocale(); if (locale == null) { return super.getLocale(); } else { return locale; } } @Override public Enumeration getLocales() { final Locale[] locales = serverRequest.getLocales(); if (locales == null) { return super.getLocales(); } else { return new Enumeration() { private int index = 0; public boolean hasMoreElements() { return index < locales.length; } public Object nextElement() { return locales[index++]; } }; } } } }