Author: gseitz Date: Sun Dec 2 15:08:27 2007 New Revision: 600406 URL: http://svn.apache.org/viewvc?rev=600406&view=rev Log: WICKET-745: AbstractAjaxTimerBehaviors can again be added via ajax
Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxTimerBehaviorTest.java Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java?rev=600406&r1=600405&r2=600406&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java Sun Dec 2 15:08:27 2007 @@ -42,6 +42,8 @@ private boolean stopped = false; + private boolean headRendered = false; + /** * Construct. * @@ -99,8 +101,9 @@ WebRequest request = (WebRequest)RequestCycle.get().getRequest(); - if (!stopped && request.isAjax() == false) + if (!stopped && !headRendered) { + headRendered = true; response.renderOnLoadJavascript(getJsTimeoutCall(updateInterval)); } } @@ -114,13 +117,13 @@ { // this might look strange, but it is necessary for IE not to leak :( return "setTimeout(\"" + getCallbackScript() + "\", " + updateInterval.getMilliseconds() + - ");"; + ");"; } protected CharSequence getCallbackScript() { return generateCallbackScript("wicketAjaxGet('" + getCallbackUrl(onlyTargetActivePage()) + - "'"); + "'"); } /** @@ -133,7 +136,7 @@ { String componentId = getComponent().getMarkupId(); precondition = "var c = Wicket.$('" + componentId + - "'); return typeof(c) != 'undefined' && c != null"; + "'); return typeof(c) != 'undefined' && c != null"; } return precondition; } Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxTimerBehaviorTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxTimerBehaviorTest.java?rev=600406&r1=600405&r2=600406&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxTimerBehaviorTest.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxTimerBehaviorTest.java Sun Dec 2 15:08:27 2007 @@ -63,8 +63,7 @@ final MyAjaxSelfUpdatingTimerBehavior timer = new MyAjaxSelfUpdatingTimerBehavior(dur); final MockPageWithLinkAndComponent page = new MockPageWithLinkAndComponent(); - page.add(new WebComponent(MockPageWithLinkAndComponent.COMPONENT_ID) - .setOutputMarkupId(true)); + page.add(new WebComponent(MockPageWithLinkAndComponent.COMPONENT_ID).setOutputMarkupId(true)); page.add(new AjaxLink(MockPageWithLinkAndComponent.LINK_ID) @@ -74,7 +73,7 @@ public void onClick(AjaxRequestTarget target) { WebMarkupContainer wmc = new WebMarkupContainer( - MockPageWithLinkAndComponent.COMPONENT_ID); + MockPageWithLinkAndComponent.COMPONENT_ID); wmc.setOutputMarkupId(true); wmc.add(timer); page.replace(wmc); @@ -137,11 +136,11 @@ String document = tester.getServletResponse().getDocument(); String updateScript = timer.getUpdateScript(); - String bodyOnLoadUpdateScript = "Wicket.Event.add(window, \"load\", function() { " + - updateScript + ";});"; if (inBodyOnLoad) { + String bodyOnLoadUpdateScript = "Wicket.Event.add(window, \"load\", function() { " + + updateScript + ";});"; validateTimerScript(document, bodyOnLoadUpdateScript); } else @@ -152,6 +151,12 @@ tester.executeBehavior(timer); + + if (inBodyOnLoad) + { + updateScript = timer.getUpdateScript(); + } + // Validate the document document = tester.getServletResponse().getDocument(); validateTimerScript(document, updateScript); @@ -180,7 +185,7 @@ } // make sure there is only one match assertEquals("There should be 1 and only 1 script in the markup for this behavior," + - "but " + count + " were found", 1, count); + "but " + count + " were found", 1, count); } // quick fix for JDK 5 method @@ -225,7 +230,7 @@ public MyAjaxSelfUpdatingTimerBehavior(Duration updateInterval) { super(updateInterval); - this.duration = updateInterval; + duration = updateInterval; } protected void onComponentRendered()