struts-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From d..@struts.apache.org
Subject [Apache Struts Wiki] Updated: ForwardingWithDifferentParameter
Date Thu, 17 Jun 2004 21:58:12 GMT
   Date: 2004-06-17T14:58:11
   Editor: MarkDiggory <mark_diggory@harvard.edu>
   Wiki: Apache Struts Wiki
   Page: ForwardingWithDifferentParameter
   URL: http://wiki.apache.org/struts/ForwardingWithDifferentParameter

   no comment

Change Log:

------------------------------------------------------------------------------
@@ -96,3 +96,75 @@
 
 
 
+How about a Wrapper class like below that provideds Parameter copying functionality? - Mark
Diggory
+
+{{{
+
+package edu.harvard.hmdc.curate.study;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.net.URLEncoder;
+import javax.servlet.http.HttpServletRequest;
+import org.apache.struts.action.ActionForward;
+
+public class MyActionForward extends ActionForward {
+
+    private Hashtable parameters = new Hashtable();
+    
+    public MyActionForward(ActionForward forward) {
+        super(forward.getName(),forward.getPath(),forward.getRedirect(),forward.getContextRelative());
+    }
+    
+    public MyActionForward(ActionForward forward, HttpServletRequest request) {
+        super(forward.getName(),forward.getPath(),forward.getRedirect(),forward.getContextRelative());
+        parameters.putAll(request.getParameterMap());
+    }
+
+    public void addParameter(String name, String value) {
+		String[] newValues = null;
+		String[] oldValues = (String[]) parameters.get(name);
+		if (oldValues == null) {
+			newValues = new String[1];
+			newValues[0] = value;
+		} else {
+			newValues = new String[oldValues.length + 1];
+			System.arraycopy(oldValues, 0, newValues, 0, oldValues.length);
+			newValues[oldValues.length] = value;
+		}
+		parameters.put(name, newValues);
+	}
+    
+    public String getPath() {
+        String result = super.getPath();
+        
+        if(!parameters.isEmpty())
+            result += "?";
+
+        for(Enumeration enum = parameters.keys();enum.hasMoreElements();){
+            String next = (String)enum.nextElement();
+            String[] vals = (String[])parameters.get(next);
+            
+            for(int i = 0; i < vals.length;i++){
+                if(vals[i] != null){
+                    result += next;
+                    result += "=";
+                    result += URLEncoder.encode(vals[i]);
+                
+                    if(i <= vals.length)
+                        result += "&";
+                }
+            }
+            
+            if(enum.hasMoreElements())
+                result += "&";
+        }
+        
+        return result;
+    }
+    
+}
+
+
+}}}
+

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org


Mime
View raw message