Updated Branches: refs/heads/wicket-1.5.x e69f3798e -> 89c9dd783
WICKET-4409 Form#getJsForInterfaceUrl(..) works not correct if cookies are disabled Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/89c9dd78 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/89c9dd78 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/89c9dd78 Branch: refs/heads/wicket-1.5.x Commit: 89c9dd78308e038d77fff5873063fba04d4c99c7 Parents: e69f379 Author: martin-g <[email protected]> Authored: Mon Feb 20 15:27:20 2012 +0100 Committer: martin-g <[email protected]> Committed: Mon Feb 20 15:27:20 2012 +0100 ---------------------------------------------------------------------- .../org/apache/wicket/markup/html/form/Form.java | 5 ++- .../java/org/apache/wicket/request/UrlEncoder.java | 2 + .../org/apache/wicket/request/UrlEncoderTest.java | 16 +++++++++++++- 3 files changed, 19 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/89c9dd78/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java index 561b596..d29f3af 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java @@ -1031,12 +1031,13 @@ public class Form<T> extends WebMarkupContainer implements IFormSubmitListener */ private void dispatchEvent(final Page page, final String url) { - // the current requst's url is most likely wicket/page?x-y.IFormSubmitListener-path-to-form + // the current request's url is most likely wicket/page?x-y.IFormSubmitListener-path-to-form // while the passed in url is most likely page?x.y.IOnChangeListener-path-to-component // we transform the passed in url into wicket/page?x-y.IOnChangeListener-path-to-component // so the system mapper can interpret it + String urlWoJSessionId = Strings.stripJSessionId(url); Url resolved = new Url(getRequest().getUrl()); - resolved.resolveRelative(Url.parse(url)); + resolved.resolveRelative(Url.parse(urlWoJSessionId)); IRequestMapper mapper = getApplication().getRootRequestMapper(); Request request = getRequest().cloneWithUrl(resolved); http://git-wip-us.apache.org/repos/asf/wicket/blob/89c9dd78/wicket-request/src/main/java/org/apache/wicket/request/UrlEncoder.java ---------------------------------------------------------------------- diff --git a/wicket-request/src/main/java/org/apache/wicket/request/UrlEncoder.java b/wicket-request/src/main/java/org/apache/wicket/request/UrlEncoder.java index 2c79066..f3b9ae7 100644 --- a/wicket-request/src/main/java/org/apache/wicket/request/UrlEncoder.java +++ b/wicket-request/src/main/java/org/apache/wicket/request/UrlEncoder.java @@ -218,6 +218,8 @@ public class UrlEncoder dontNeedEncoding.set('&'); dontNeedEncoding.set('='); dontNeedEncoding.set('+'); + // don't encode semicolon because it is used in ;jsessionid= + dontNeedEncoding.set(';'); break; // same as path, but '/' will not be encoded http://git-wip-us.apache.org/repos/asf/wicket/blob/89c9dd78/wicket-request/src/test/java/org/apache/wicket/request/UrlEncoderTest.java ---------------------------------------------------------------------- diff --git a/wicket-request/src/test/java/org/apache/wicket/request/UrlEncoderTest.java b/wicket-request/src/test/java/org/apache/wicket/request/UrlEncoderTest.java index e08096d..f44234f 100644 --- a/wicket-request/src/test/java/org/apache/wicket/request/UrlEncoderTest.java +++ b/wicket-request/src/test/java/org/apache/wicket/request/UrlEncoderTest.java @@ -23,7 +23,7 @@ import org.junit.Test; /** * Tests for {@link UrlDecoder} */ -public class UrlEncoderTest +public class UrlEncoderTest extends Assert { /** @@ -34,7 +34,19 @@ public class UrlEncoderTest @Test public void encodeApostrophe() { - Assert.assertEquals("someone%27s%20bad%20url", + assertEquals("someone%27s%20bad%20url", UrlEncoder.FULL_PATH_INSTANCE.encode("someone's bad url", CharEncoding.UTF_8)); } + + /** + * Do not encode semicolon in the Url's path because it is used in ';jsessionid=...' + * + * https://issues.apache.org/jira/browse/WICKET-4409 + */ + @Test + public void dontEncodeSemicolon() + { + String encoded = UrlEncoder.PATH_INSTANCE.encode("path;jsessionid=1234567890", CharEncoding.UTF_8); + assertEquals("path;jsessionid=1234567890", encoded); + } }
