remm 01/03/22 18:55:44
Modified: catalina/src/share/org/apache/catalina/servlets
DefaultServlet.java
Log:
- Now adding the parameters before sending a redirect.
Bug reported by Stefan Schmidt <stefan at schmidt1.de>
Revision Changes Path
1.31 +41 -6
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
Index: DefaultServlet.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- DefaultServlet.java 2001/03/18 06:36:13 1.30
+++ DefaultServlet.java 2001/03/23 02:55:44 1.31
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
1.30 2001/03/18 06:36:13 remm Exp $
- * $Revision: 1.30 $
- * $Date: 2001/03/18 06:36:13 $
+ * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
1.31 2001/03/23 02:55:44 remm Exp $
+ * $Revision: 1.31 $
+ * $Date: 2001/03/23 02:55:44 $
*
* ====================================================================
*
@@ -122,7 +122,7 @@
*
* @author Craig R. McClanahan
* @author Remy Maucherat
- * @version $Revision: 1.30 $ $Date: 2001/03/18 06:36:13 $
+ * @version $Revision: 1.31 $ $Date: 2001/03/23 02:55:44 $
*/
public class DefaultServlet
@@ -1047,7 +1047,9 @@
if (resourceInfo.collection) {
if (!request.getRequestURI().endsWith("/")) {
- response.sendRedirect(request.getRequestURI() + "/");
+ String redirectPath = request.getRequestURI() + "/";
+ redirectPath = appendParameters(request, redirectPath);
+ response.sendRedirect(redirectPath);
return;
}
@@ -1058,7 +1060,8 @@
if ((contextPath != null) && (!contextPath.equals("/"))) {
redirectPath = contextPath + redirectPath;
}
- response.sendRedirect(rewriteUrl(redirectPath));
+ redirectPath = appendParameters(request, redirectPath);
+ response.sendRedirect(redirectPath);
return;
}
@@ -1364,6 +1367,38 @@
}
return result;
+ }
+
+
+ /**
+ * Append the request parameters to the redirection string before calling
+ * sendRedirect.
+ */
+ protected String appendParameters(HttpServletRequest request,
+ String redirectPath) {
+
+ StringBuffer result = new StringBuffer(rewriteUrl(redirectPath));
+
+ Enumeration enum = request.getParameterNames();
+ if (enum.hasMoreElements())
+ result.append("?");
+
+ while (enum.hasMoreElements()) {
+ String name = (String) enum.nextElement();
+ String[] values = request.getParameterValues(name);
+ for (int i = 0; i < values.length; i++) {
+ result.append(rewriteUrl(name));
+ result.append("=");
+ result.append(rewriteUrl(values[i]));
+ if (i < (values.length - 1))
+ result.append("&");
+ }
+ if (enum.hasMoreElements())
+ result.append("&");
+ }
+
+ return result.toString();
+
}