craigmcc 2002/10/12 18:59:32 Modified: src/share/org/apache/struts/util RequestUtils.java src/test/org/apache/struts/util TestRequestUtils.java Log: Enhance computeURL() to use "&" as the connector between parameters on a forward URL (but not a redirect URL). PR: Bugzilla #13458 Bug report submitted by Matt Raible <matt at raibledesigns.com> Patch submitted by Antoni Reuss <areus at ibit.org> Revision Changes Path 1.59 +14 -8 jakarta-struts/src/share/org/apache/struts/util/RequestUtils.java Index: RequestUtils.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/util/RequestUtils.java,v retrieving revision 1.58 retrieving revision 1.59 diff -u -r1.58 -r1.59 --- RequestUtils.java 13 Oct 2002 01:33:38 -0000 1.58 +++ RequestUtils.java 13 Oct 2002 01:59:31 -0000 1.59 @@ -448,6 +448,12 @@ anchor = null; } + // Define the parameter separator + String separator = "&"; + if (redirect) { + separator = "&"; + } + // Add the required request parameters boolean question = temp.indexOf('?') >= 0; Iterator keys = params.keySet().iterator(); @@ -459,7 +465,7 @@ url.append('?'); question = true; } else { - url.append("&"); + url.append(separator); } url.append(URLEncoder.encode(key)); url.append('='); // Interpret null as "no value" @@ -468,7 +474,7 @@ url.append('?'); question = true; } else { - url.append("&"); + url.append(separator); } url.append(URLEncoder.encode(key)); url.append('='); @@ -480,7 +486,7 @@ url.append('?'); question = true; } else { - url.append("&"); + url.append(separator); } url.append(URLEncoder.encode(key)); url.append('='); @@ -491,7 +497,7 @@ url.append('?'); question = true; } else { - url.append("&"); + url.append(separator); } url.append(URLEncoder.encode(key)); url.append('='); 1.11 +80 -11 jakarta-struts/src/test/org/apache/struts/util/TestRequestUtils.java Index: TestRequestUtils.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/test/org/apache/struts/util/TestRequestUtils.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- TestRequestUtils.java 27 Jul 2002 23:26:09 -0000 1.10 +++ TestRequestUtils.java 13 Oct 2002 01:59:32 -0000 1.11 @@ -831,7 +831,7 @@ } - // Add parameters only + // Add parameters only -- forward URL public void testComputeURL3a() { request.setPathElements("/myapp", "/action.do", null, null); @@ -849,13 +849,13 @@ } assertNotNull("url present", url); assertTrue("url value", - url.equals("/myapp/bar?foo1=bar1&foo2=bar2") || - url.equals("/myapp/bar?foo2=bar2&foo1=bar1")); + url.equals("/myapp/bar?foo1=bar1&foo2=bar2") || + url.equals("/myapp/bar?foo2=bar2&foo1=bar1")); } - // Add anchor only + // Add anchor only -- forward URL public void testComputeURL3b() { request.setPathElements("/myapp", "/action.do", null, null); @@ -876,7 +876,7 @@ } - // Add parameters + anchor + // Add parameters + anchor -- forward URL public void testComputeURL3c() { request.setPathElements("/myapp", "/action.do", null, null); @@ -894,8 +894,77 @@ } assertNotNull("url present", url); assertTrue("url value", - url.equals("/myapp/bar?foo1=bar1&foo2=bar2#anchor") || - url.equals("/myapp/bar?foo2=bar2&foo1=bar1#anchor")); + url.equals("/myapp/bar?foo1=bar1&foo2=bar2#anchor") || + url.equals("/myapp/bar?foo2=bar2&foo1=bar1#anchor")); + + } + + + // Add parameters only -- redirect URL + public void testComputeURL3d() { + + request.setPathElements("/myapp", "/action.do", null, null); + Map map = new HashMap(); + map.put("foo1", "bar1"); + map.put("foo2", "bar2"); + String url = null; + try { + url = RequestUtils.computeURL + (page, null, + null, "/bar", + map, null, true); + } catch (MalformedURLException e) { + fail("MalformedURLException: " + e); + } + assertNotNull("url present", url); + assertTrue("url value", + url.equals("/myapp/bar?foo1=bar1&foo2=bar2") || + url.equals("/myapp/bar?foo2=bar2&foo1=bar1")); + + } + + + // Add anchor only -- redirect URL + public void testComputeURL3e() { + + request.setPathElements("/myapp", "/action.do", null, null); + String url = null; + try { + url = RequestUtils.computeURL + (page, null, + null, "/bar", + null, "anchor", true); + } catch (MalformedURLException e) { + fail("MalformedURLException: " + e); + } + assertNotNull("url present", url); + assertEquals("url value", + "/myapp/bar#anchor", + url); + + } + + + // Add parameters + anchor -- redirect URL + public void testComputeURL3f() { + + request.setPathElements("/myapp", "/action.do", null, null); + Map map = new HashMap(); + map.put("foo1", "bar1"); + map.put("foo2", "bar2"); + String url = null; + try { + url = RequestUtils.computeURL + (page, null, + null, "/bar", + map, "anchor", false); + } catch (MalformedURLException e) { + fail("MalformedURLException: " + e); + } + assertNotNull("url present", url); + assertTrue("url value", + url.equals("/myapp/bar?foo1=bar1&foo2=bar2#anchor") || + url.equals("/myapp/bar?foo2=bar2&foo1=bar1#anchor")); }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>