Author: nbubna
Date: Thu Oct  8 17:24:48 2009
New Revision: 823236

URL: http://svn.apache.org/viewvc?rev=823236&view=rev
Log:
VELTOOLS-123 check request attributes for non-default layouts (thanks to 
Frederic Daoud)

Modified:
    
velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/VelocityLayoutServlet.java

Modified: 
velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/VelocityLayoutServlet.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/VelocityLayoutServlet.java?rev=823236&r1=823235&r2=823236&view=diff
==============================================================================
--- 
velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/VelocityLayoutServlet.java
 (original)
+++ 
velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/VelocityLayoutServlet.java
 Thu Oct  8 17:24:48 2009
@@ -165,9 +165,7 @@
      */
     protected void fillContext(Context ctx, HttpServletRequest request)
     {
-        // check if an alternate layout has been specified
-        // by way of the request parameters
-        String layout = request.getParameter(KEY_LAYOUT);
+        String layout = findLayout(request);
         if (layout != null)
         {
             // let the template know what its new layout is
@@ -175,6 +173,22 @@
         }
     }
 
+    /**
+     * Searches for a non-default layout to be used for this request.
+     * This implementation checks the request parameters and attributes.
+     */
+    protected String findLayout(HttpServletRequest request)
+    {
+        // check if an alternate layout has been specified
+        // by way of the request parameters
+        String layout = request.getParameter(KEY_LAYOUT);
+        // also look in the request attributes 
+        if (layout == null) 
+        { 
+            layout = (String)request.getAttribute(KEY_LAYOUT); 
+        }
+        return layout;
+    }
 
     /**
      * Overrides VelocityViewServlet.mergeTemplate to do a two-pass


Reply via email to