? diff
Index: src/org/apache/cocoon/acting/RequestParamAction.java
===================================================================
RCS file: /home/cvspublic/xml-cocoon2/src/org/apache/cocoon/acting/RequestParamAction.java,v
retrieving revision 1.5
diff -u -r1.5 RequestParamAction.java
--- src/org/apache/cocoon/acting/RequestParamAction.java	2001/08/22 12:03:32	1.5
+++ src/org/apache/cocoon/acting/RequestParamAction.java	2001/09/23 18:45:06
@@ -38,6 +38,9 @@
  * (A variable is created for each request parameter (only if it doesn't exist)
  * with the same name as the parameter itself)
  *
+ * Default values can be set for request parameters, by including sitemap parameters
+ * named "default.<parameter-name>".
+ *
  * Sitemap definition:
  *
  * <pre>
@@ -52,6 +55,7 @@
  * &lt;map:match pattern="some-resource"&gt;
  *  &lt;map:act type="request"&gt;
  *     &lt;map:parameter name="parameters" value="true"/&gt;
+ *     &lt;map:parameter name="default.dest" value="invalid-destination.html"/&gt;
  *     &lt;map:redirect-to uri="{context}/somewhereelse/{dest}"/&gt;
  *  &lt;/map:act&gt;
  * &lt;/map:match&gt;
@@ -83,6 +87,8 @@
     public final static String MAP_CONTEXTPATH = "context";
  
     public final static String PARAM_PARAMETERS = "parameters";
+    public final static String PARAM_DEFAULT_PREFIX = "default.";
+
  
     public Map act( Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters param )
         throws Exception
@@ -113,10 +119,21 @@
           while(e.hasMoreElements()){
             String name = (String) e.nextElement();
             String value = request.getParameter(name);
+
             if (value != null && !map.containsKey(name)){
               map.put(name, value);
             }
           }
+	  
+	  String[] paramNames = param.getNames();
+          for (int i=0; i< paramNames.length; i++) {
+	      if (paramNames[i].startsWith(PARAM_DEFAULT_PREFIX) &&
+		  (request.getParameter(paramNames[i].substring(PARAM_DEFAULT_PREFIX.length())) == null)) {
+		  map.put(paramNames[i].substring(PARAM_DEFAULT_PREFIX.length()), param.getParameter(paramNames[i]));
+	      }
+	  }
+
+
         }
  
         return(map);
