You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2015/07/24 09:49:29 UTC

tapestry-5 git commit: TAP5-2458: fix redirect to current page from page activation method #close

Repository: tapestry-5
Updated Branches:
  refs/heads/master 828b1b4b5 -> c859076d2


TAP5-2458: fix redirect to current page from page activation method #close


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/c859076d
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/c859076d
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/c859076d

Branch: refs/heads/master
Commit: c859076d22f12d3c975231792197247c5775ca02
Parents: 828b1b4
Author: Jochen Kemnade <jo...@eddyson.de>
Authored: Fri Jul 24 09:48:14 2015 +0200
Committer: Jochen Kemnade <jo...@eddyson.de>
Committed: Fri Jul 24 09:48:57 2015 +0200

----------------------------------------------------------------------
 .../AjaxComponentEventRequestHandler.java       |  4 +--
 .../src/test/app1/OnActivateRedirect.tml        |  6 ++++
 .../tapestry5/integration/app1/AjaxTests.java   | 13 +++++++++
 .../tapestry5/integration/app1/pages/Index.java |  8 ++++--
 .../app1/pages/OnActivateRedirect.java          | 29 ++++++++++++++++++++
 5 files changed, 56 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/c859076d/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentEventRequestHandler.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentEventRequestHandler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentEventRequestHandler.java
index c4a852e..4862ebd 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentEventRequestHandler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentEventRequestHandler.java
@@ -87,12 +87,12 @@ public class AjaxComponentEventRequestHandler implements ComponentEventRequestHa
 
         queue.setRenderingPage(activePage);
 
+        request.setAttribute(InternalConstants.PAGE_NAME_ATTRIBUTE_NAME, parameters.getActivePageName());
+
         if (pageActivator.activatePage(activePage.getRootElement().getComponentResources(), parameters
                 .getPageActivationContext(), interceptor))
             return;
 
-        request.setAttribute(InternalConstants.PAGE_NAME_ATTRIBUTE_NAME, parameters.getActivePageName());
-
         Page containerPage = cache.get(parameters.getContainingPageName());
 
         ComponentPageElement element = containerPage.getComponentElementByNestedId(parameters.getNestedComponentId());

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/c859076d/tapestry-core/src/test/app1/OnActivateRedirect.tml
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/app1/OnActivateRedirect.tml b/tapestry-core/src/test/app1/OnActivateRedirect.tml
new file mode 100644
index 0000000..89ffdcd
--- /dev/null
+++ b/tapestry-core/src/test/app1/OnActivateRedirect.tml
@@ -0,0 +1,6 @@
+<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+
+  Message: <span id="message">${message}</span>
+
+  <t:actionlink id="link" async="true">perform AJAX request</t:actionlink>
+</html>

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/c859076d/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/AjaxTests.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/AjaxTests.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/AjaxTests.java
index 5d3ca65..830ad92 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/AjaxTests.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/AjaxTests.java
@@ -271,4 +271,17 @@ public class AjaxTests extends App1TestCase
         waitForElementToAppear("content2");
         assertText("content2", "Music Library");
     }
+
+    /**
+     * TAP5-2458
+     */
+    @Test
+    public void redirect_from_page_activation_method()
+    {
+        openLinks("OnActivateRedirect Demo");
+
+        clickAndWait("link");
+
+        assertText("message", "Redirected from XHR");
+    }
 }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/c859076d/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
index a12ce0b..79aa58d 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
@@ -597,8 +597,12 @@ public class Index
                     new Item("textfieldwithnullvalidateparameter", "TextField with null validate parameter", "A TextField whose validate parameter is bound to null"),
 
                     new Item("validateInErrorEvent", "Validate in error Event", "A form that trigger validate in " +
-                            "error event on submit when textfield is empty")
-            );
+                            "error event on submit when textfield is empty"),
+
+                    new Item("onactivateredirect", "OnActivateRedirect Demo", "A page that redirects to itself from"
+                        + " its activation method")
+
+                );
 
     static
     {

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/c859076d/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/OnActivateRedirect.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/OnActivateRedirect.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/OnActivateRedirect.java
new file mode 100644
index 0000000..557f17b
--- /dev/null
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/OnActivateRedirect.java
@@ -0,0 +1,29 @@
+package org.apache.tapestry5.integration.app1.pages;
+
+import org.apache.tapestry5.annotations.Persist;
+import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.ioc.annotations.Inject;
+import org.apache.tapestry5.services.Request;
+
+public class OnActivateRedirect {
+
+  @Persist("flash")
+  @Property(write = false)
+  private String message;
+
+  @Inject
+  private Request request;
+
+  Object onActivate() {
+    if (request.isXHR()) {
+      message = "Redirected from XHR";
+      return this;
+    }
+    return null;
+  }
+
+  void onAction() {
+
+  }
+
+}