You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2008/08/28 16:16:24 UTC
svn commit: r689833 - in
/wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng:
AjaxBehavior.java AjaxEventBehavior.java AjaxRequestAttributes.java
js/wicket-ajax-ng.js
Author: knopp
Date: Thu Aug 28 07:16:23 2008
New Revision: 689833
URL: http://svn.apache.org/viewvc?rev=689833&view=rev
Log:
isForcePost
Modified:
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxBehavior.java
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxEventBehavior.java
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxRequestAttributes.java
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/js/wicket-ajax-ng.js
Modified: wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxBehavior.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxBehavior.java?rev=689833&r1=689832&r2=689833&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxBehavior.java (original)
+++ wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxBehavior.java Thu Aug 28 07:16:23 2008
@@ -269,6 +269,18 @@
}
}
+ private Object renderBoolean(Boolean b)
+ {
+ if (b != null && b == true)
+ {
+ return 1;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
private void renderAttributes(Component component, AjaxRequestAttributes attributes,
JSONObject o)
{
@@ -276,13 +288,14 @@
{
o.put("f", attributes.getForm().getMarkupId());
}
- o.put("m", attributes.isMultipart());
+ o.put("m", renderBoolean(attributes.isMultipart()));
+ o.put("fp", renderBoolean(attributes.isForcePost()));
o.put("rt", attributes.getRequesTimeout());
o.put("pt", attributes.getProcessingTimeout());
o.put("t", attributes.getToken());
- o.put("r", attributes.isRemovePrevious());
+ o.put("r", renderBoolean(attributes.isRemovePrevious()));
o.put("th", attributes.getThrottle());
- o.put("thp", attributes.isThrottlePostpone());
+ o.put("thp", renderBoolean(attributes.isThrottlePostpone()));
renderFunctionList(o, "pr", attributes.getPreconditions());
renderFunctionList(o, "be", attributes.getBeforeHandlers());
Modified: wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxEventBehavior.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxEventBehavior.java?rev=689833&r1=689832&r2=689833&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxEventBehavior.java (original)
+++ wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxEventBehavior.java Thu Aug 28 07:16:23 2008
@@ -59,14 +59,14 @@
js.append("',");
js.append(renderAttributes(component));
- boolean allowDefault = getAttributes().allowDefault();
+ boolean allowDefault = getAttributes().isAllowDefault();
if (allowDefault)
{
js.append("," + allowDefault);
}
- js.append(")");
+ js.append(")");
- response.renderOnDomReadyJavascript(js.toString());
+ response.renderOnDomReadyJavascript(decorateScript(js).toString());
}
}
Modified: wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxRequestAttributes.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxRequestAttributes.java?rev=689833&r1=689832&r2=689833&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxRequestAttributes.java (original)
+++ wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxRequestAttributes.java Thu Aug 28 07:16:23 2008
@@ -126,7 +126,8 @@
* Note that for multipart AJAX requests a hidden IFRAME will be used and that can have negative
* impact on error detection.
*
- * @return <code>true</code> if the form submit should be multipart, false otherwise
+ * @return <code>true</code> if the form submit should be multipart, <code>false</code>
+ * otherwise
*/
public Boolean isMultipart()
{
@@ -141,6 +142,27 @@
}
/**
+ * Returns whether the Ajax request should be a <code>POST</code> regardless of whether a form
+ * is being submitted.
+ * <p>
+ * For a <code>POST</code>request all URL arguments are submitted as body. This can be useful
+ * if the URL parameters are longer than maximal URL length.
+ *
+ * @return <code>true</code> if the request should be post, <code>false</code> otherwise.
+ */
+ public Boolean isForcePost()
+ {
+ if (delegate != null)
+ {
+ return delegate.isForcePost();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ /**
* Timeout in milliseconds for the AJAX request. This only involves the actual communication and
* not the processing afterwards. Can be <code>null</code> in which case the default request
* timeout will be used.
@@ -528,18 +550,18 @@
/**
* Only applies for event behaviors. Returns whether the behavior should allow the default event
* handler to be invoked. For example if the behavior is attached to a link and
- * {@link #allowDefault()} returns <code>false</code> (which is default value), the link's URL
- * will not be followed. If {@link #allowDefault()} returns <code>true</code>, the link URL
- * will be loaded (and the onclick handler fired if there is any).
+ * {@link #isAllowDefault()} returns <code>false</code> (which is default value), the link's
+ * URL will not be followed. If {@link #isAllowDefault()} returns <code>true</code>, the link
+ * URL will be loaded (and the onclick handler fired if there is any).
*
* @return <code>true</code> if the default event handler should be invoked,
* <code>false</code> otherwise.
*/
- public boolean allowDefault()
+ public boolean isAllowDefault()
{
if (delegate != null)
{
- return delegate.allowDefault();
+ return delegate.isAllowDefault();
}
else
{
Modified: wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/js/wicket-ajax-ng.js
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/js/wicket-ajax-ng.js?rev=689833&r1=689832&r2=689833&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/js/wicket-ajax-ng.js (original)
+++ wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/js/wicket-ajax-ng.js Thu Aug 28 07:16:23 2008
@@ -205,7 +205,7 @@
var logger = DummyLogger;
- if (typeof(console) !== "undefined" && L.isFunction(console.log) && logger === DummyLogger)
+ if (!UA.webkit && typeof(window.console) !== "undefined" && L.isFunction(console.log) && logger === DummyLogger)
{
logger = FirebugLogger;
@@ -1376,6 +1376,9 @@
* negative impact on error detection.
* (doesn't work with current YUI 3 PR1 release)
*
+ * fp, forcePost - Boolean Optional. Whether the request should be post even if no form
+ * is specified. Defaults to false.
+ *
* rt, requestTimeout - Integer Timeout in milliseconds for the AJAX request. This only
* involves the actual communication and not the processing
* afterwards. Can be null in which case the default request
@@ -1449,18 +1452,19 @@
* argument. If possible error message will be second argument
* passed to the handlers.
*
- * u, urlArguments - Object Optional. Map that contains additional URL arguments. These
+ * u, urlArguments - Object Optional. Map that contains additional URL arguments. These
* will be appended to the URL. This is simpler alternative to
* urlArgumentMethods.
*
- * ua, urlArgumentMethods - Method(s) Optional. Method or array of methods that produce additional
+ * ua, urlArgumentMethods - Method(s) Optional. Method or array of methods that produce additional
* URL arguments. Each of the methods will get this
* RequestQueueItem passed and must return a
* Map<String, String> (Object).
*
- * rqi, requestQueueItem - Method(s) Optional. Method or array of methods that will be invoked
+ * rqi, requestQueueItem - Method(s) Optional. Method or array of methods that will be invoked
* after the RequestQueueItem instance is created. The methods
* will get the request queue instance passed as first argument.
+ *
*/
var RequestQueueItem = function(attributes)
{
@@ -1495,6 +1499,7 @@
component: a.component || a.c || null,
formId: a.formId || a.f || null,
multipart: b(a.multipart || a.m),
+ forcePost: b(a.forcePost || a.fp),
requestTimeout: a.requestTimeout || a.rt || gs.defaultRequestTimeout,
processingTimeout: a.processingTimeout || a.pt || gs.defaultProcessingTimeout,
pageId: a.pageId || a.p || gs.defaultPageId,
@@ -1685,54 +1690,7 @@
this.next = null;
}
},
-
- defaultUrlParameters: function()
- {
- var a = this.attributes;
- var componentId = (a.component == null) ? null : (W.$(a.component).getAttribute("id"));
- var res = {};
- var gs = W.ajax.globalSettings;
- res[gs.urlParamComponentId] = componentId;
- res[gs.urlParamPageId] = a.pageId;
- res[gs.urlParamFormId] = a.formId;
- res[gs.urlParamListenerInterface] = a.listenerInterface;
- res[gs.urlParamBehaviorIndex] = a.behaviorIndex;
- return res;
- },
-
- buildUrl: function()
- {
- var url = W.ajax.globalSettings.urlPrefix;
- var a = this.attributes;
-
- var params = new Object();
-
- if (a.urlArguments != null)
- {
- appendMap(params, a.urlArguments);
- }
- for (var i = 0; i < a.urlArgumentMethods.length; ++i)
- {
- var m = a.urlArgumentMethods[i](this);
- if (L.isObject(m))
- {
- appendMap(params, m);
- }
- }
-
- appendMap(params, this.defaultUrlParameters());
-
- var paramsString = mapToUrlParameters(params);
-
- if (paramsString.length > 0)
- {
- url += "?";
- url += paramsString;
- }
-
- return url;
- },
-
+
parseHeaderContribution: function(header)
{
var s = "<head>" + header + "</head>";
@@ -1976,14 +1934,78 @@
this.failure();
},
- getRequestCfg: function(url)
+ defaultUrlParameters: function()
{
var a = this.attributes;
+ var componentId = (a.component == null) ? null : (W.$(a.component).getAttribute("id"));
+ var res = {};
+ var gs = W.ajax.globalSettings;
+ res[gs.urlParamComponentId] = componentId;
+ res[gs.urlParamPageId] = a.pageId;
+ res[gs.urlParamFormId] = a.formId;
+ res[gs.urlParamListenerInterface] = a.listenerInterface;
+ res[gs.urlParamBehaviorIndex] = a.behaviorIndex;
+ return res;
+ },
+
+ buildUrl: function()
+ {
+ var url = W.ajax.globalSettings.urlPrefix;
+ var stamp = "" + (reqCount ++) + (Math.ceil(Math.random() * 10000));
+ if (url.indexOf("?") == -1)
+ {
+ url += "?";
+ }
+ else
+ {
+ url += "&";
+ }
+ url += W.ajax.globalSettings.urlParamTimestamp;
+ url += "=";
+ url += stamp;
+ return url;
+ },
+
+ buildUrlParameters: function()
+ {
+ var a = this.attributes;
+
+ var params = new Object();
+
+ if (a.urlArguments != null)
+ {
+ appendMap(params, a.urlArguments);
+ }
+ for (var i = 0; i < a.urlArgumentMethods.length; ++i)
+ {
+ var m = a.urlArgumentMethods[i](this);
+ if (L.isObject(m))
+ {
+ appendMap(params, m);
+ }
+ }
+
+ appendMap(params, this.defaultUrlParameters());
+
+ return mapToUrlParameters(params);
+ },
+
+ getRequestCfg: function(urlParameters)
+ {
+ var a = this.attributes;
+
var m = a.formId != null ? "POST" : "GET";
+
+ if (m == "GET" && a.forcePost == true)
+ {
+ m = "POST";
+ }
+
var f = a.formId != null ? { id:a.formId } : null;
var res =
{
method: m,
+ data: urlParameters,
on:
{
success: bind(this.onSuccess, this),
@@ -2001,8 +2023,9 @@
this.invokeBeforeHandlers();
this.next = next;
+ var urlParameters = this.buildUrlParameters();
var url = this.buildUrl();
- var cfg = this.getRequestCfg(url);
+ var cfg = this.getRequestCfg(urlParameters);
log.info("RequestQueue", "Initiating AJAX Request on ", url, " with configuration ", cfg);
@@ -2175,9 +2198,7 @@
var defaultArgumentMethod = function(item)
{
- var stamp = "" + (reqCount ++) + (Math.ceil(Math.random() * 10000));
var res = {};
- res[W.ajax.globalSettings.urlParamTimestamp] = stamp;
res[W.ajax.globalSettings.urlParamUrlDepth] = W.ajax.globalSettings.urlDepthValue;
res["wicket:ajax"] = true;
return res;