Author: gseitz Date: Fri Mar 7 17:00:44 2008 New Revision: 634880 URL: http://svn.apache.org/viewvc?rev=634880&view=rev Log: WICKET-1397
Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/MockPageWithFormAndContainedLink.html (with props) wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/MockPageWithFormAndContainedLink.java (with props) Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/AjaxSubmitLinkClickTest.java Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java?rev=634880&r1=634879&r2=634880&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java Fri Mar 7 17:00:44 2008 @@ -27,37 +27,37 @@ /** * A link that submits a form via ajax. Since this link takes the form as a constructor argument it * does not need to be inside form's component hierarchy. - * + * * <p/> It works by splitting the javascript/Ajax calls from the normal non-ajax requests by * generating: - * + * * <pre> * <a href="normal action url" onclick="ajax javascript script; return * false;">link</a> * </pre> - * + * * If/when javascript is turned off in the browser, or it doesn't support javascript, then the * browser will not respond to the onclick event, using the href directly. Wicket will then use a * normal request target, and call the serverside onClick with a null [EMAIL PROTECTED] AjaxRequestTarget}. - * + * * If javascript is enabled, Wicket will send an ajax request, and process it serverside with an * [EMAIL PROTECTED] AjaxRequestTarget} that is supplied to the server-side onClick method. The "return false" * in the <a href> onclick handler ensures the browser doesn't perform the normal request too. - * + * * The latter is nicely illustrated with this: - * + * * <pre> * <a href="javascript:alert('href event handler');" * onclick="alert('onclick event handler');">clicking me gives two * alerts</a> - * + * * <a href="javascript:alert('href event handler');" * onclick="alert('onclick event handler');return false;">clicking me * gives only one alert</a> * </pre> - * + * * @since 1.2 - * + * * @author Igor Vaynberg (ivaynberg) */ public abstract class AjaxSubmitLink extends AbstractSubmitLink @@ -66,7 +66,7 @@ /** * Construct. - * + * * @param id */ public AjaxSubmitLink(String id) @@ -76,7 +76,7 @@ /** * Construct. - * + * * @param id * @param form */ @@ -91,12 +91,12 @@ protected void onSubmit(AjaxRequestTarget target) { - AjaxSubmitLink.this.onSubmit(target, form); + AjaxSubmitLink.this.onSubmit(target, getForm()); } protected void onError(AjaxRequestTarget target) { - AjaxSubmitLink.this.onError(target, form); + AjaxSubmitLink.this.onError(target, getForm()); } protected CharSequence getEventHandler() @@ -124,7 +124,7 @@ /** * Returns the [EMAIL PROTECTED] IAjaxCallDecorator} that will be used to modify the generated javascript. * This is the preferred way of changing the javascript in the onclick handler - * + * * @return call decorator used to modify the generated javascript or null for none */ protected IAjaxCallDecorator getAjaxCallDecorator() @@ -152,7 +152,7 @@ /** * Final implementation of the Button's onSubmit. AjaxSubmitLinks have there own onSubmit which * is called. - * + * * @see org.apache.wicket.markup.html.form.Button#onSubmit() */ public final void onSubmit() @@ -161,7 +161,7 @@ /** * Listener method invoked on form submit - * + * * @param target * @param form */ @@ -169,10 +169,10 @@ /** * Listener method invoked on form submit with errors - * + * * @param target * @param form - * + * * TODO 1.3: Make abstract to be consistent with onsubmit() */ protected void onError(AjaxRequestTarget target, Form form) Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/AjaxSubmitLinkClickTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/AjaxSubmitLinkClickTest.java?rev=634880&r1=634879&r2=634880&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/AjaxSubmitLinkClickTest.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/AjaxSubmitLinkClickTest.java Fri Mar 7 17:00:44 2008 @@ -54,6 +54,51 @@ /** * */ + public void testClickLinkInsideForm_ajaxSubmitLink() + { + MockPojo mockPojo = new MockPageWithFormAndLink.MockPojo(); + mockPojo.setName("Mock name"); + + final MockPageWithFormAndContainedLink page = new MockPageWithFormAndContainedLink(mockPojo); + page.addLink(new AjaxSubmitLink("link") + { + private static final long serialVersionUID = 1L; + + protected void onSubmit(AjaxRequestTarget target, Form form) + { + assertNotNull(form); + linkClicked = true; + } + }); + + tester.startPage(new ITestPageSource() + { + private static final long serialVersionUID = 1L; + + public Page getTestPage() + { + return page; + } + }); + + tester.assertRenderedPage(MockPageWithFormAndContainedLink.class); + + // Change the name in the textfield + page.getNameField().setModelValue(new String[] { "new mock value" }); + + // Click the submit link + tester.clickLink("form:link"); + + // Has it really been clicked? + assertTrue(linkClicked); + + // And has the form been "submitted" + assertEquals("new mock value", mockPojo.getName()); + } + + /** + * + */ public void testClickLink_ajaxSubmitLink() { MockPojo mockPojo = new MockPageWithFormAndLink.MockPojo(); @@ -66,6 +111,7 @@ protected void onSubmit(AjaxRequestTarget target, Form form) { + assertNotNull(form); linkClicked = true; } }; @@ -84,7 +130,7 @@ tester.assertRenderedPage(MockPageWithFormAndLink.class); // Change the name in the textfield - page.getNameField().setModelValue("new mock value"); + page.getNameField().setModelValue(new String[] { "new mock value" }); // Click the submit link tester.clickLink("link"); Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/MockPageWithFormAndContainedLink.html URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/MockPageWithFormAndContainedLink.html?rev=634880&view=auto ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/MockPageWithFormAndContainedLink.html (added) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/MockPageWithFormAndContainedLink.html Fri Mar 7 17:00:44 2008 @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<title>Insert title here</title> +</head> +<body> +<form wicket:id="form"> +<input type="text" wicket:id="name" /> +<a href="#" wicket:id="link">Link</a> +</form> +</body> +</html> \ No newline at end of file Propchange: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/MockPageWithFormAndContainedLink.html ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/MockPageWithFormAndContainedLink.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/MockPageWithFormAndContainedLink.java?rev=634880&view=auto ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/MockPageWithFormAndContainedLink.java (added) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/MockPageWithFormAndContainedLink.java Fri Mar 7 17:00:44 2008 @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.util.tester.apps_5; + +import org.apache.wicket.markup.html.link.AbstractLink; + +/** + * Contains a form with a textfield on it and a link inside the form. Use the + * [EMAIL PROTECTED] #addLink(AbstractLink)} method to add a link to the form. + * + * @author Gerolf Seitz + */ +public class MockPageWithFormAndContainedLink extends MockPageWithFormAndLink +{ + + /** + * Construct. + * + * @param mockPojo + */ + public MockPageWithFormAndContainedLink(MockPojo mockPojo) + { + super(mockPojo); + } + + /** + * @param link + */ + public void addLink(AbstractLink link) + { + getForm().add(link); + } + +} Propchange: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/apps_5/MockPageWithFormAndContainedLink.java ------------------------------------------------------------------------------ svn:mime-type = text/plain