Author: ate
Date: Wed Sep 12 16:13:26 2007
New Revision: 575116

URL: http://svn.apache.org/viewvc?rev=575116&view=rev
Log:
WICKET-649: New Wicket Portlet support: fix appending query parameters
- Fixing IOnChangeListener components with 
wantOnSelectionChangedNotifications()==true
  See: https://issues.apache.org/jira/browse/WICKET-649#action_12526935

Modified:
    
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Check.java
    
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
    
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
    
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Radio.java
    
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
    
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java

Modified: 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Check.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Check.java?rev=575116&r1=575115&r2=575116&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Check.java
 (original)
+++ 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Check.java
 Wed Sep 12 16:13:26 2007
@@ -19,10 +19,12 @@
 import java.util.Collection;
 
 import org.apache.wicket.Component;
+import org.apache.wicket.RequestContext;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.protocol.http.portlet.PortletRequestContext;
 
 
 /**
@@ -145,15 +147,23 @@
                if (group.wantOnSelectionChangedNotifications())
                {
                        // url that points to this components IOnChangeListener 
method
-                       final CharSequence url = 
group.urlFor(IOnChangeListener.INTERFACE);
+                       CharSequence url = 
group.urlFor(IOnChangeListener.INTERFACE);
 
                        Form form = (Form)group.findParent(Form.class);
                        if (form != null)
                        {
+                               RequestContext rc = RequestContext.get();
+                               if (rc.isPortletRequest())
+                               {
+                                       // restore url back to real wicket path 
as its going to be interpreted by the form itself
+                                       url = 
((PortletRequestContext)rc).getLastEncodedPath();
+                               }
                                tag.put("onclick", 
form.getJsForInterfaceUrl(url));
                        }
                        else
                        {
+                               // TODO: following doesn't work with portlets, 
should be posted to a dynamic hidden form
+                               // with an ActionURL or something
                                // NOTE: do not encode the url as that would 
give invalid
                                // JavaScript
                                tag.put("onclick", "window.location.href='" + 
url + "&" + group.getInputName()

Modified: 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java?rev=575116&r1=575115&r2=575116&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
 (original)
+++ 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
 Wed Sep 12 16:13:26 2007
@@ -16,9 +16,11 @@
  */
 package org.apache.wicket.markup.html.form;
 
+import org.apache.wicket.RequestContext;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.protocol.http.portlet.PortletRequestContext;
 import org.apache.wicket.util.convert.ConversionException;
 import org.apache.wicket.util.string.StringValueConversionException;
 import org.apache.wicket.util.string.Strings;
@@ -159,15 +161,23 @@
                // checkbox is clicked?
                if (wantOnSelectionChangedNotifications())
                {
-                       final CharSequence url = 
urlFor(IOnChangeListener.INTERFACE);
+                       CharSequence url = urlFor(IOnChangeListener.INTERFACE);
 
                        Form form = (Form)findParent(Form.class);
                        if (form != null)
                        {
+                               RequestContext rc = RequestContext.get();
+                               if (rc.isPortletRequest())
+                               {
+                                       // restore url back to real wicket path 
as its going to be interpreted by the form itself
+                                       url = 
((PortletRequestContext)rc).getLastEncodedPath();
+                               }
                                tag.put("onclick", 
form.getJsForInterfaceUrl(url));
                        }
                        else
                        {
+                               // TODO: following doesn't work with portlets, 
should be posted to a dynamic hidden form
+                               // with an ActionURL or something
                                // NOTE: do not encode the url as that would 
give invalid
                                // JavaScript
                                tag.put("onclick", "window.location.href='" + 
url + "&" + getInputName()

Modified: 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java?rev=575116&r1=575115&r2=575116&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
 (original)
+++ 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
 Wed Sep 12 16:13:26 2007
@@ -18,9 +18,11 @@
 
 import java.util.List;
 
+import org.apache.wicket.RequestContext;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.protocol.http.portlet.PortletRequestContext;
 
 
 /**
@@ -171,15 +173,23 @@
                if (wantOnSelectionChangedNotifications())
                {
                        // url that points to this components IOnChangeListener 
method
-                       final CharSequence url = 
urlFor(IOnChangeListener.INTERFACE);
+                       CharSequence url = urlFor(IOnChangeListener.INTERFACE);
 
                        Form form = (Form)findParent(Form.class);
                        if (form != null)
                        {
+                               RequestContext rc = RequestContext.get();
+                               if (rc.isPortletRequest())
+                               {
+                                       // restore url back to real wicket path 
as its going to be interpreted by the form itself
+                                       url = 
((PortletRequestContext)rc).getLastEncodedPath();
+                               }                               
                                tag.put("onchange", 
form.getJsForInterfaceUrl(url));
                        }
                        else
                        {
+                               // TODO: following doesn't work with portlets, 
should be posted to a dynamic hidden form
+                               // with an ActionURL or something
                                tag.put("onchange", "window.location.href='" + 
url + "&" + getInputName()
                                                + "=' + 
this.options[this.selectedIndex].value;");
                        }

Modified: 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Radio.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Radio.java?rev=575116&r1=575115&r2=575116&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Radio.java
 (original)
+++ 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/Radio.java
 Wed Sep 12 16:13:26 2007
@@ -17,10 +17,12 @@
 package org.apache.wicket.markup.html.form;
 
 import org.apache.wicket.Component;
+import org.apache.wicket.RequestContext;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.protocol.http.portlet.PortletRequestContext;
 import org.apache.wicket.util.lang.Objects;
 
 /**
@@ -128,15 +130,23 @@
                if (group.wantOnSelectionChangedNotifications())
                {
                        // url that points to this components IOnChangeListener 
method
-                       final CharSequence url = 
group.urlFor(IOnChangeListener.INTERFACE);
+                       CharSequence url = 
group.urlFor(IOnChangeListener.INTERFACE);
 
                        Form form = (Form)group.findParent(Form.class);
                        if (form != null)
                        {
+                               RequestContext rc = RequestContext.get();
+                               if (rc.isPortletRequest())
+                               {
+                                       // restore url back to real wicket path 
as its going to be interpreted by the form itself
+                                       url = 
((PortletRequestContext)rc).getLastEncodedPath();
+                               }                               
                                tag.put("onclick", 
form.getJsForInterfaceUrl(url));
                        }
                        else
                        {
+                               // TODO: following doesn't work with portlets, 
should be posted to a dynamic hidden form
+                               // with an ActionURL or something
                                // NOTE: do not encode the url as that would 
give invalid
                                // JavaScript
                                tag.put("onclick", "window.location.href='" + 
url + "&" + group.getInputName()

Modified: 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java?rev=575116&r1=575115&r2=575116&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
 (original)
+++ 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
 Wed Sep 12 16:13:26 2007
@@ -19,9 +19,11 @@
 import java.util.List;
 
 import org.apache.wicket.Page;
+import org.apache.wicket.RequestContext;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.protocol.http.portlet.PortletRequestContext;
 import org.apache.wicket.util.string.AppendingStringBuffer;
 import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.version.undo.Change;
@@ -460,16 +462,24 @@
                                // when the option is clicked?
                                if (wantOnSelectionChangedNotifications())
                                {
-                                       final CharSequence url = 
urlFor(IOnChangeListener.INTERFACE);
+                                       CharSequence url = 
urlFor(IOnChangeListener.INTERFACE);
 
                                        Form form = 
(Form)findParent(Form.class);
                                        if (form != null)
                                        {
+                                               RequestContext rc = 
RequestContext.get();
+                                               if (rc.isPortletRequest())
+                                               {
+                                                       // restore url back to 
real wicket path as its going to be interpreted by the form itself
+                                                       url = 
((PortletRequestContext)rc).getLastEncodedPath();
+                                               }                               
                                                buffer.append(" 
onclick=\"").append(form.getJsForInterfaceUrl(url)).append(
                                                                ";\"");
                                        }
                                        else
                                        {
+                                               // TODO: following doesn't work 
with portlets, should be posted to a dynamic hidden form
+                                               // with an ActionURL or 
something
                                                // NOTE: do not encode the url 
as that would give
                                                // invalid JavaScript
                                                buffer.append(" 
onclick=\"window.location.href='").append(url).append(

Modified: 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java?rev=575116&r1=575115&r2=575116&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java
 (original)
+++ 
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java
 Wed Sep 12 16:13:26 2007
@@ -76,6 +76,15 @@
                return new EmbeddedPortletHeaderResponse(response);
        }
 
+    public String getLastEncodedPath()
+    {
+        if (lastEncodedUrl != null)
+        {
+            return lastEncodedUrl[1];
+        }
+        return null;
+    }
+    
        public String getLastEncodedPath(String url)
        {
                if (url != null && lastEncodedUrl != null && 
url.equals(lastEncodedUrl[0]))


Reply via email to