forward port r1571643
 with `svn merge -c1571643 ^/tiles/framework/branches/TILES_3_0_X .`

ref: http://thread.gmane.org/gmane.comp.apache.tiles.scm/576


git-svn-id: https://svn.apache.org/repos/asf/tiles/framework/trunk@1571644 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java b/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java
index edc82b9..f84d0f7 100644
--- a/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java
+++ b/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java
@@ -67,12 +67,15 @@
      *
      * @param d The definition to replace.
      * @param name The name of the definition to be created.
-     * @param vars The variables to be substituted.
+     * @param varsOrig The variables to be substituted.
      * @return The definition that can be rendered.
      * @since 2.2.0
      */
     public static Definition replacePlaceholders(Definition d, String name,
-            Object... vars) {
+            Object... varsOrig) {
+
+        Object[] vars = replaceNullsWithBlank(varsOrig);
+
         Definition nudef = new Definition();
 
         nudef.setExtends(replace(d.getExtends(), vars));
@@ -229,4 +232,12 @@
         }
         return st;
     }
+
+    private static Object[] replaceNullsWithBlank(Object[] varsOrig) {
+        Object[] vars = new Object[varsOrig.length];
+        for(int i = 0; i < varsOrig.length; ++i) {
+            vars[i] = null != varsOrig[i] ? varsOrig[i] : "";
+        }
+        return vars;
+    }
 }