You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2011/11/05 20:40:58 UTC
svn commit: r1198035 - in
/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax:
AjaxRequestTarget.java wicket-ajax.js
Author: ivaynberg
Date: Sat Nov 5 19:40:58 2011
New Revision: 1198035
URL: http://svn.apache.org/viewvc?rev=1198035&view=rev
Log:
Issue: WICKET-4200
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/wicket-ajax.js
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java?rev=1198035&r1=1198034&r2=1198035&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java Sat Nov 5 19:40:58 2011
@@ -671,18 +671,20 @@ public class AjaxRequestTarget implement
// invoke onbeforerespond event on listeners
fireOnBeforeRespondListeners();
- // normal behavior
+ // process added components
+ respondComponents(bodyResponse);
+
+ fireOnAfterRespondListeners(bodyResponse);
+
+ // queue up prepend javascripts. unlike other steps these are executed out of order so that
+ // components can contribute them from inside their onbeforerender methods.
Iterator<CharSequence> it = prependJavaScripts.iterator();
while (it.hasNext())
{
CharSequence js = it.next();
- respondInvocation(bodyResponse, js);
+ respondPriorityInvocation(bodyResponse, js);
}
- // process added components
- respondComponents(bodyResponse);
-
- fireOnAfterRespondListeners(bodyResponse);
// execute the dom ready javascripts as first javascripts
// after component replacement
@@ -1284,12 +1286,26 @@ public class AjaxRequestTarget implement
headerRendering = false;
}
+ private void respondInvocation(final Response response, final CharSequence js)
+ {
+ respondJavascriptInvocation("evaluate", response, js);
+ }
+
+ private void respondPriorityInvocation(final Response response, final CharSequence js)
+ {
+ respondJavascriptInvocation("priority-evaluate", response, js);
+ }
+
+
/**
- *
+ * @param invocation
+ * type of invocation tag, usually {@literal evaluate} or
+ * {@literal priority-evaluate}
* @param response
* @param js
*/
- private void respondInvocation(final Response response, final CharSequence js)
+ private void respondJavascriptInvocation(final String invocation, final Response response,
+ final CharSequence js)
{
boolean encoded = false;
CharSequence javascript = js;
@@ -1301,7 +1317,8 @@ public class AjaxRequestTarget implement
javascript = encode(js);
}
- response.write("<evaluate");
+ response.write("<");
+ response.write(invocation);
if (encoded)
{
response.write(" encoding=\"");
@@ -1309,10 +1326,14 @@ public class AjaxRequestTarget implement
response.write("\"");
}
response.write(">");
+
response.write("<![CDATA[");
response.write(javascript);
response.write("]]>");
- response.write("</evaluate>");
+
+ response.write("</");
+ response.write(invocation);
+ response.write(">");
encodingBodyResponse.reset();
}
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/wicket-ajax.js
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/wicket-ajax.js?rev=1198035&r1=1198034&r2=1198035&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/wicket-ajax.js (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/wicket-ajax.js Sat Nov 5 19:40:58 2011
@@ -1300,6 +1300,15 @@ Wicket.Ajax.Call.prototype = {
}
}
+ // go through the ajax response and execute all priority-invocations first
+
+ for (var i = 0; i < root.childNodes.length; ++i) {
+ var node = root.childNodes[i];
+ if (node.tagName == "priority-evaluate") {
+ this.processEvaluation(steps, node);
+ }
+ }
+
// go through the ajax response and for every action (component, js evaluation, header contribution)
// ad the proper closure to steps
var stepIndexOfLastReplacedComponent = -1;
@@ -1319,7 +1328,6 @@ Wicket.Ajax.Call.prototype = {
} else if (node.tagName == "redirect") {
this.processRedirect(steps, node);
}
-
}
if (stepIndexOfLastReplacedComponent != -1) {
this.processFocusedComponentReplaceCheck(steps, stepIndexOfLastReplacedComponent);