Author: mschulte
Date: Thu Jul 12 11:57:25 2007
New Revision: 555719

URL: http://svn.apache.org/viewvc?view=rev&rev=555719
Log:
fixes TAPESTRY-1638

Modified:
    
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/ImageSubmit.java
    
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestImageSubmit.java

Modified: 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/ImageSubmit.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/ImageSubmit.java?view=diff&rev=555719&r1=555718&r2=555719
==============================================================================
--- 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/ImageSubmit.java
 (original)
+++ 
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/ImageSubmit.java
 Thu Jul 12 11:57:25 2007
@@ -47,8 +47,11 @@
     protected boolean isClicked(IRequestCycle cycle, String name)
     {
         String parameterName = name + ".x";
+        
+        // the name.x parameter is not set for asynchronous submits
+        String value = cycle.getParameter(FormConstants.SUBMIT_NAME_PARAMETER);
 
-        return (cycle.getParameter(parameterName) != null);
+        return (cycle.getParameter(parameterName) != null) || 
name.equals(value);
     }
     
     protected void renderFormComponent(IMarkupWriter writer, IRequestCycle 
cycle)

Modified: 
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestImageSubmit.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestImageSubmit.java?view=diff&rev=555719&r1=555718&r2=555719
==============================================================================
--- 
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestImageSubmit.java
 (original)
+++ 
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/TestImageSubmit.java
 Thu Jul 12 11:57:25 2007
@@ -308,6 +308,7 @@
         trainIsRewinding(form, true);
 
         trainGetParameter(cycle, "fred.x", null);
+        trainGetParameter(cycle, FormConstants.SUBMIT_NAME_PARAMETER, 
"peebles");
 
         replay();
 
@@ -343,6 +344,7 @@
         trainIsRewinding(form, true);
 
         trainGetParameter(cycle, "fred.x", "33");
+        trainGetParameter(cycle, FormConstants.SUBMIT_NAME_PARAMETER, "fred");
 
         replay();
 
@@ -357,6 +359,44 @@
 
         verify();
     }
+    
+    public void testRewindTriggerAsync()
+    {
+        Creator creator = new Creator();
+        ImageSubmit submit = (ImageSubmit) 
creator.newInstance(ImageSubmit.class, new Object[]
+        { "tag", "clicked" });
+
+        IBinding binding = newBinding();
+        submit.setBinding("selected", binding);
+
+        IValidationDelegate delegate = newDelegate();
+        IForm form = newForm();
+        IRequestCycle cycle = newCycle();
+        IMarkupWriter writer = newWriter();
+
+        trainGetForm(cycle, form);
+
+        trainWasPrerendered(form, writer, submit, false);
+
+        expect(form.getDelegate()).andReturn(delegate);
+
+        delegate.setFormComponent(submit);
+
+        trainGetElementId(form, submit, "fred");
+
+        trainIsRewinding(form, true);
+
+        trainGetParameter(cycle, "fred.x", null);
+        trainGetParameter(cycle, FormConstants.SUBMIT_NAME_PARAMETER, "fred");
+
+        replay();
+
+        submit.renderComponent(writer, cycle);
+
+        assertEquals("clicked", PropertyUtils.read(submit, "selected"));
+
+        verify();
+    }
 
     public void testRewindTriggeredWithPointBound()
     {
@@ -390,7 +430,8 @@
         trainGetParameter(cycle, "fred.x", "33");
         trainGetParameter(cycle, "fred.x", "33");
         trainGetParameter(cycle, "fred.y", "19");
-
+        trainGetParameter(cycle, FormConstants.SUBMIT_NAME_PARAMETER, "fred");
+        
         replay();
 
         submit.renderComponent(writer, cycle);


Reply via email to