Author: ivaynberg
Date: Fri Sep 26 23:43:36 2008
New Revision: 699571

URL: http://svn.apache.org/viewvc?rev=699571&view=rev
Log:
WICKET-1376

Modified:
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java?rev=699571&r1=699570&r2=699571&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java 
(original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java 
Fri Sep 26 23:43:36 2008
@@ -370,7 +370,10 @@
                }
                else if (component instanceof Page)
                {
-                       throw new IllegalArgumentException("component cannot be 
a page");
+                       if (component != page)
+                       {
+                               throw new IllegalArgumentException("component 
cannot be a page");
+                       }
                }
                else if (component instanceof AbstractRepeater)
                {
@@ -522,6 +525,17 @@
         */
        public final void respond(final RequestCycle requestCycle)
        {
+               final WebResponse response = 
(WebResponse)requestCycle.getResponse();
+
+               if (markupIdToComponent.values().contains(page))
+               {
+                       // the page itself has been added to the request 
target, we simply issue a redirect back
+                       // to the page
+                       final String url = requestCycle.urlFor(page).toString();
+                       response.redirect(url);
+                       return;
+               }
+
                for (ITargetRespondListener listener : respondListeners)
                {
                        listener.onTargetRespond(this);
@@ -533,7 +547,6 @@
                final String encoding = 
app.getRequestCycleSettings().getResponseRequestEncoding();
 
                // Set content type based on markup type for page
-               final WebResponse response = 
(WebResponse)requestCycle.getResponse();
                response.setCharacterEncoding(encoding);
                response.setContentType("text/xml; charset=" + encoding);
 
@@ -732,7 +745,7 @@
                RequestCycle.get().setResponse(encodingBodyResponse);
 
                // Initialize temporary variables
-               final Page page = (Page)component.findParent(Page.class);
+               final Page page = component.findParent(Page.class);
                if (page == null)
                {
                        // dont throw an exception but just ignore this 
component, somehow


Reply via email to