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