You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by at...@apache.org on 2007/09/13 01:13:27 UTC

svn commit: r575116 - in /wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket: markup/html/form/ protocol/http/portlet/

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]))