[jboss-user] [JBoss Portal] - Re: Layout I18N: wrong locale in JSP

halversp do-not-reply at jboss.com
Fri Jan 19 12:51:18 EST 2007


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.

p


  | public 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++];
  |           }
  |           
  |         };
  |       }
  |     }      
  |      
  |    }
  | }
  | 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4003943#4003943

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4003943



More information about the jboss-user mailing list