You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by rl...@apache.org on 2005/05/15 06:48:40 UTC

cvs commit: jakarta-tapestry/framework/src/documentation/content/xdocs/tapestry/ComponentReference ImageSubmit.xml Submit.xml

rlewisshell    2005/05/14 21:48:40

  Modified:    .        status.xml
               framework/src/test/org/apache/tapestry/form TestSubmit.java
               framework/src/java/org/apache/tapestry/form ImageSubmit.jwc
                        Submit.jwc Submit.java LinkSubmit.jwc
                        LinkSubmit.java
               framework/src/documentation/content/xdocs/tapestry/ComponentReference
                        ImageSubmit.xml Submit.xml
  Added:       framework/src/java/org/apache/tapestry/form
                        AbstractSubmit.java
  Log:
  TAPESTRY-325: Allow deferred listener for LinkSubmit
  TAPESTRY-326: Listener parameters for form submitting components
  
  Revision  Changes    Path
  1.106     +2 -0      jakarta-tapestry/status.xml
  
  Index: status.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/status.xml,v
  retrieving revision 1.105
  retrieving revision 1.106
  diff -u -r1.105 -r1.106
  --- status.xml	12 May 2005 18:56:26 -0000	1.105
  +++ status.xml	15 May 2005 04:48:39 -0000	1.106
  @@ -61,6 +61,8 @@
         <action type="add" dev="HLS" fixes-bug="TAPESTRY-323"> Allow control over the ErrorHandler used when building the HiveMind Registry. </action>
         <action type="update" dev="HLS"> Remove &lt;inject-state&gt;, and add type attribute to &lt;inject&gt;.</action>
         <action type="fix" due-to="Richard Hensley">Fix some problems with the TestRestartService test suite.</action>
  +      <action type="add" dev="RLS" fixes-bug="TAPESTRY-325">Added defer parameters parameter to LinkSubmit.</action>
  +      <action type="add" dev="RLS" fixes-bug="TAPESTRY-326">Added listener parameters to Form submitting components.</action>
       </release>
       <release version="4.0-alpha-2" date="May 5 2005">
         <action type="update" dev="HLS"> Coordinate Locale changes with the hivemind.ThreadLocale service. </action>
  
  
  
  1.2       +66 -0     jakarta-tapestry/framework/src/test/org/apache/tapestry/form/TestSubmit.java
  
  Index: TestSubmit.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/TestSubmit.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestSubmit.java	9 May 2005 14:45:15 -0000	1.1
  +++ TestSubmit.java	15 May 2005 04:48:39 -0000	1.2
  @@ -14,6 +14,9 @@
   
   package org.apache.tapestry.form;
   
  +import java.util.Collection;
  +import java.util.LinkedList;
  +
   import org.apache.hivemind.util.PropertyUtils;
   import org.apache.tapestry.IActionListener;
   import org.apache.tapestry.IBinding;
  @@ -336,4 +339,67 @@
   
           verifyControls();
       }
  +
  +    public void testTriggerWithDeferredListenerAndSingleParameter()
  +    {
  +        IActionListener listener = newListener();
  +        MockForm form = new MockForm();
  +        MockControl cycleControl = newControl(IRequestCycle.class);
  +        IRequestCycle cycle = (IRequestCycle)cycleControl.getMock();
  +
  +        Object parameter = new Object();
  +        Creator creator = new Creator();
  +        Submit submit = (Submit) creator.newInstance(Submit.class, new Object[]
  +        { "listener", listener, "defer", Boolean.TRUE, "parameters", parameter });
  +
  +        cycle.setListenerParameters(new Object[] { parameter });
  +        cycleControl.setMatcher(MockControl.ARRAY_MATCHER);
  +        
  +        replayControls();
  +
  +        submit.handleClick(cycle, form);
  +
  +        verifyControls();
  +
  +        listener.actionTriggered(submit, cycle);
  +
  +        replayControls();
  +
  +        form.runDeferred();
  +
  +        verifyControls();
  +    }
  +
  +    public void testTriggerWithDeferredListenerAndMultipleParameters()
  +    {
  +        IActionListener listener = newListener();
  +        MockForm form = new MockForm();
  +        MockControl cycleControl = newControl(IRequestCycle.class);
  +        IRequestCycle cycle = (IRequestCycle)cycleControl.getMock();
  +
  +        Collection parameters = new LinkedList();
  +        parameters.add("p1");
  +        parameters.add("p2");
  +        
  +        Creator creator = new Creator();
  +        Submit submit = (Submit) creator.newInstance(Submit.class, new Object[]
  +        { "listener", listener, "defer", Boolean.TRUE, "parameters", parameters });
  +
  +        cycle.setListenerParameters(new Object[] { "p1", "p2" });
  +        cycleControl.setMatcher(MockControl.ARRAY_MATCHER);
  +        
  +        replayControls();
  +
  +        submit.handleClick(cycle, form);
  +
  +        verifyControls();
  +
  +        listener.actionTriggered(submit, cycle);
  +
  +        replayControls();
  +
  +        form.runDeferred();
  +
  +        verifyControls();
  +    }
   }
  
  
  
  1.7       +8 -0      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/ImageSubmit.jwc
  
  Index: ImageSubmit.jwc
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/ImageSubmit.jwc,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ImageSubmit.jwc	9 May 2005 14:45:15 -0000	1.6
  +++ ImageSubmit.jwc	15 May 2005 04:48:39 -0000	1.7
  @@ -69,6 +69,14 @@
             a chance to update properties.
          </description>
     </parameter>
  +
  +  <parameter name="parameters" default-binding="ognl">
  +    <description>
  +    An object, or list of objects, gathered when the button is triggered and 
  +    made available as listener parameters in the request cycle, making
  +    the parameters available to a deferred listener.
  +    </description>
  +  </parameter>
     
     <reserved-parameter name="type"/>
     <reserved-parameter name="src"/>
  
  
  
  1.8       +7 -0      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/Submit.jwc
  
  Index: Submit.jwc
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/Submit.jwc,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Submit.jwc	13 May 2005 16:57:49 -0000	1.7
  +++ Submit.jwc	15 May 2005 04:48:39 -0000	1.8
  @@ -55,6 +55,13 @@
             until just before the form's listener is invoked.
         </description>
     </parameter>
  +  <parameter name="parameters" default-binding="ognl">
  +    <description>
  +    An object, or list of objects, gathered when the button is triggered and 
  +    made available as listener parameters in the request cycle, making
  +    the parameters available to a deferred listener.
  +    </description>
  +  </parameter>
     
     <reserved-parameter name="name"/>
     <reserved-parameter name="type"/>
  
  
  
  1.8       +17 -90    jakarta-tapestry/framework/src/java/org/apache/tapestry/form/Submit.java
  
  Index: Submit.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/Submit.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Submit.java	9 May 2005 14:45:15 -0000	1.7
  +++ Submit.java	15 May 2005 04:48:39 -0000	1.8
  @@ -1,4 +1,4 @@
  -// Copyright 2004, 2005 The Apache Software Foundation
  +//Copyright 2004, 2005 The Apache Software Foundation
   //
   // Licensed under the Apache License, Version 2.0 (the "License");
   // you may not use this file except in compliance with the License.
  @@ -14,8 +14,6 @@
   
   package org.apache.tapestry.form;
   
  -import org.apache.tapestry.IActionListener;
  -import org.apache.tapestry.IForm;
   import org.apache.tapestry.IMarkupWriter;
   import org.apache.tapestry.IRequestCycle;
   
  @@ -30,48 +28,22 @@
    * @author Howard Lewis Ship
    */
   
  -public abstract class Submit extends AbstractFormComponent
  +public abstract class Submit extends AbstractSubmit
   {
  -
  -    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
  -    {
  -        IForm form = getForm(cycle);
  -
  -        if (form.wasPrerendered(writer, this))
  -            return;
  -
  -        boolean rewinding = form.isRewinding();
  -
  -        String name = form.getElementId(this);
  -
  -        setName(name);
  -
  -        if (rewinding)
  -        {
  -            // Don't bother doing anything if disabled.
  -
  -            if (isDisabled())
  -                return;
  -
  -            // How to know which Submit button was actually
  -            // clicked? When submitted, it produces a request parameter
  -            // with its name and value (the value serves double duty as both
  -            // the label on the button, and the parameter value).
  -
  -            String value = cycle.getParameter(name);
  -
  -            // If the value isn't there, then this button wasn't
  -            // selected.
  -
  -            if (value == null)
  -                return;
  -
  -            handleClick(cycle, form);
  -
  -            return;
  -        }
  -
  -        writer.beginEmpty("input");
  +	protected boolean isClicked(IRequestCycle cycle, String name)
  +	{
  +        // How to know which Submit button was actually
  +        // clicked? When submitted, it produces a request parameter
  +        // with its name and value (the value serves double duty as both
  +        // the label on the button, and the parameter value).
  +
  +        // If the value isn't there, then this button wasn't
  +        // selected.
  +        return cycle.getParameter(name) != null;
  +	}
  +	
  +    protected void writeTag(IMarkupWriter writer, IRequestCycle cycle, String name) {
  +		writer.beginEmpty("input");
           writer.attribute("type", "submit");
           writer.attribute("name", name);
   
  @@ -86,54 +58,9 @@
           renderInformalParameters(writer, cycle);
   
           writer.closeTag();
  -    }
  -
  -    void handleClick(final IRequestCycle cycle, IForm form)
  -    {
  -        if (isParameterBound("selected"))
  -            setSelected(getTag());
  -
  -        final IActionListener listener = getListener();
  -
  -        if (listener == null)
  -            return;
  -
  -        // Have a listener; notify it now, or defer for later?
  -
  -        Runnable notify = new Runnable()
  -        {
  -            public void run()
  -            {
  -                listener.actionTriggered(Submit.this, cycle);
  -            }
  -        };
  -
  -        if (getDefer())
  -            form.addDeferredRunnable(notify);
  -        else
  -            notify.run();
  -    }
  +	}
   
       /** parameter */
  -
       public abstract String getLabel();
   
  -    /** parameter */
  -
  -    public abstract boolean isDisabled();
  -
  -    /** parameter */
  -
  -    public abstract IActionListener getListener();
  -
  -    /** parameter */
  -
  -    public abstract Object getTag();
  -
  -    /** parameter */
  -
  -    public abstract void setSelected(Object tag);
  -
  -    /** parameter */
  -    public abstract boolean getDefer();
   }
  \ No newline at end of file
  
  
  
  1.5       +19 -10    jakarta-tapestry/framework/src/java/org/apache/tapestry/form/LinkSubmit.jwc
  
  Index: LinkSubmit.jwc
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/LinkSubmit.jwc,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LinkSubmit.jwc	18 Apr 2005 17:06:41 -0000	1.4
  +++ LinkSubmit.jwc	15 May 2005 04:48:40 -0000	1.5
  @@ -25,19 +25,28 @@
     Creates a hyperlink that submits its enclosing form using JavaScript.
     </description>
   
  -  <parameter name="listener">
  -  	<description>
  -	    The listener is invoked during the rewind as the link component is encountered.  This is
  -	    both attractive and dangerous when combined with a form.  When the listener is
  -	    invoked, the form has not completely rewound, so not all form values have necessarily
  -	    been processed, so the listener might be performing its logic based on inconsistent
  -	    data.
  -  	</description>
  -  </parameter>
  -  	
     <parameter name="disabled"/>
     <parameter name="selected"/>
     <parameter name="tag"/>
  +  
  +  <parameter name="listener" default-binding="listener">
  +      <description>
  +          A listener that is notified if this component is triggered.
  +      </description>
  +  </parameter>
  +  <parameter name="defer" default-binding="ognl" default-value="true">
  +      <description>
  +          If true (the default), then any listener notification is deferred
  +          until just before the form's listener is invoked.
  +      </description>
  +  </parameter>
  +  <parameter name="parameters" default-binding="ognl">
  +    <description>
  +    An object, or list of objects, gathered when the link is triggered and 
  +    made available as listener parameters in the request cycle, making
  +    the parameters available to a deferred listener.
  +    </description>
  +  </parameter>
   
     <reserved-parameter name="name"/>
     <reserved-parameter name="href"/>
  
  
  
  1.8       +80 -106   jakarta-tapestry/framework/src/java/org/apache/tapestry/form/LinkSubmit.java
  
  Index: LinkSubmit.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/LinkSubmit.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- LinkSubmit.java	3 May 2005 17:41:27 -0000	1.7
  +++ LinkSubmit.java	15 May 2005 04:48:40 -0000	1.8
  @@ -15,8 +15,6 @@
   package org.apache.tapestry.form;
   
   import org.apache.hivemind.ApplicationRuntimeException;
  -import org.apache.tapestry.IActionListener;
  -import org.apache.tapestry.IBinding;
   import org.apache.tapestry.IForm;
   import org.apache.tapestry.IMarkupWriter;
   import org.apache.tapestry.IRequestCycle;
  @@ -31,7 +29,7 @@
    * @author Richard Lewis-Shell
    */
   
  -public abstract class LinkSubmit extends AbstractFormComponent
  +public abstract class LinkSubmit extends AbstractSubmit
   {
       /**
        * The name of an {@link org.apache.tapestry.IRequestCycle}attribute in which the current
  @@ -47,118 +45,94 @@
        */
       public static final String ATTRIBUTE_FUNCTION_NAME = "org.apache.tapestry.form.LinkSubmit_function";
   
  -    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
  -    {
  -        IForm form = getForm(cycle);
  -
  -        if (form.wasPrerendered(writer, this))
  -            return;
  +	protected boolean isClicked(IRequestCycle cycle, String name)
  +	{
  +        // How to know which Submit link was actually
  +        // clicked? When submitted, it sets its elementId into a hidden field
  +        String value = cycle.getParameter("_linkSubmit");
  +
  +        // If the value isn't the elementId of this component, then this link wasn't
  +        // selected.
  +        return value != null && value.equals(name);
  +	}
  +    
  +	protected void writeTag(IMarkupWriter writer, IRequestCycle cycle, String name)
  +	{
  +		boolean disabled = isDisabled();
  +		
  +		IMarkupWriter wrappedWriter;
  +		
  +		if (!disabled)
  +		{
  +	        PageRenderSupport pageRenderSupport = TapestryUtils.getPageRenderSupport(
  +	                cycle,
  +	                this);
  +	
  +	        // make sure the submit function is on the page (once)
  +	        if (cycle.getAttribute(ATTRIBUTE_FUNCTION_NAME) == null)
  +	        {
  +	            pageRenderSupport
  +	                    .addBodyScript("function submitLink(form, elementId) { form._linkSubmit.value = elementId; if (form.onsubmit == null || form.onsubmit()) form.submit(); }");
  +	            cycle.setAttribute(ATTRIBUTE_FUNCTION_NAME, this);
  +	        }
  +	
  +	        IForm form = getForm(cycle);
  +	        String formName = form.getName();
  +
  +            // one hidden field per form:
  +	        String formHiddenFieldAttributeName = ATTRIBUTE_FUNCTION_NAME + formName;
  +	        if (cycle.getAttribute(formHiddenFieldAttributeName) == null)
  +	        {
  +	            writer.beginEmpty("input");
  +	            writer.attribute("type", "hidden");
  +	            writer.attribute("name", "_linkSubmit");
  +	            cycle.setAttribute(formHiddenFieldAttributeName, this);
  +	        }
  +		    
  +		    writer.begin("a");
  +		    writer.attribute("href", "javascript:submitLink(document." + formName + ",\"" + name
  +		            + "\");");
  +		
  +		    // Allow the wrapped components a chance to render.
  +		    // Along the way, they may interact with this component
  +		    // and cause the name variable to get set.
  +		    wrappedWriter = writer.getNestedWriter();
  +		}
  +		else
  +			wrappedWriter = writer;
   
  -        String formName = form.getName();
  -
  -        boolean rewinding = form.isRewinding();
  -
  -        String name = form.getElementId(this);
  +        renderBody(wrappedWriter, cycle);
   
  -        IMarkupWriter wrappedWriter;
  +		if (!disabled)
  +		{
  +		    // Generate additional attributes from informal parameters.		
  +		    renderInformalParameters(writer, cycle);
  +		
  +		    // Dump in HTML provided by wrapped components
  +		    wrappedWriter.close();
  +		
  +		    // Close the <a> tag
  +		    writer.end();
  +		}
   
  +	}
  +	
  +    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
  +    {
           if (cycle.getAttribute(ATTRIBUTE_NAME) != null)
               throw new ApplicationRuntimeException(Tapestry.getMessage("LinkSubmit.may-not-nest"),
                       this, null, null);
   
           cycle.setAttribute(ATTRIBUTE_NAME, this);
   
  -        boolean disabled = isDisabled();
  -        if (!disabled)
  -        {
  -            if (!rewinding)
  -            {
  -
  -                PageRenderSupport pageRenderSupport = TapestryUtils.getPageRenderSupport(
  -                        cycle,
  -                        this);
  -
  -                // make sure the submit function is on the page (once)
  -                if (cycle.getAttribute(ATTRIBUTE_FUNCTION_NAME) == null)
  -                {
  -                    pageRenderSupport
  -                            .addBodyScript("function submitLink(form, elementId) { form._linkSubmit.value = elementId; if (form.onsubmit == null || form.onsubmit()) form.submit(); }");
  -                    cycle.setAttribute(ATTRIBUTE_FUNCTION_NAME, this);
  -                }
  -
  -                // one hidden field per form:
  -                String formHiddenFieldAttributeName = ATTRIBUTE_FUNCTION_NAME + formName;
  -                if (cycle.getAttribute(formHiddenFieldAttributeName) == null)
  -                {
  -                    writer.beginEmpty("input");
  -                    writer.attribute("type", "hidden");
  -                    writer.attribute("name", "_linkSubmit");
  -                    cycle.setAttribute(formHiddenFieldAttributeName, this);
  -                }
  -            }
  -            else
  -            {
  -                // How to know which Submit link was actually
  -                // clicked? When submitted, it sets its elementId into a hidden field
  -
  -                String value = cycle.getParameter("_linkSubmit");
  -
  -                // If the value isn't the elementId of this component, then this link wasn't
  -                // selected.
  -
  -                if (value != null && value.equals(name))
  -                {
  -                    IBinding selectedBinding = getBinding("selected");
  -                    if (selectedBinding != null)
  -                        selectedBinding.setObject(getTag());
  -                    IActionListener listener = getListener();
  -                    if (listener != null)
  -                        listener.actionTriggered(this, cycle);
  -                }
  -            }
  -
  -            writer.begin("a");
  -            writer.attribute("href", "javascript:submitLink(document." + formName + ",\"" + name
  -                    + "\");");
  -
  -            // Allow the wrapped components a chance to render.
  -            // Along the way, they may interact with this component
  -            // and cause the name variable to get set.
  -
  -            wrappedWriter = writer.getNestedWriter();
  -        }
  -        else
  -            wrappedWriter = writer;
  -
  -        renderBody(wrappedWriter, cycle);
  -
  -        if (!disabled)
  -        {
  -            // Generate additional attributes from informal parameters.
  -
  -            renderInformalParameters(writer, cycle);
  -
  -            // Dump in HTML provided by wrapped components
  -
  -            wrappedWriter.close();
  -
  -            // Close the <a> tag
  -
  -            writer.end();
  -        }
  -
  -        cycle.removeAttribute(ATTRIBUTE_NAME);
  +        try 
  +		{
  +        	super.renderComponent(writer, cycle);
  +		}
  +        finally
  +		{
  +            cycle.removeAttribute(ATTRIBUTE_NAME);        	
  +		}
       }
   
  -    public abstract boolean isDisabled();
  -
  -    public abstract void setDisabled(boolean disabled);
  -
  -    public abstract IActionListener getListener();
  -
  -    public abstract void setListener(IActionListener listener);
  -
  -    public abstract Object getTag();
  -
  -    public abstract void setTag(Object tag);
   }
  \ No newline at end of file
  
  
  
  1.1                  jakarta-tapestry/framework/src/java/org/apache/tapestry/form/AbstractSubmit.java
  
  Index: AbstractSubmit.java
  ===================================================================
  //Copyright 2004, 2005 The Apache Software Foundation
  //
  // Licensed 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.tapestry.form;
  
  import java.util.Collection;
  
  import org.apache.tapestry.IActionListener;
  import org.apache.tapestry.IForm;
  import org.apache.tapestry.IMarkupWriter;
  import org.apache.tapestry.IRequestCycle;
  
  /**
   * Superclass for components submitting their form.
   * @author Richard Lewis-Shell
   * @since 4.0
   */
  
  abstract class AbstractSubmit extends AbstractFormComponent {
  
  	/**
  	 * Determine if this submit component was clicked.
  	 * @param cycle
  	 * @param name
  	 * @return true if this submit was clicked
  	 */
  	protected abstract boolean isClicked(IRequestCycle cycle, String name);
  	
  	/**
  	 * Write the tag (and any nested content) for this submit component.
  	 * @param writer
  	 * @param cycle
  	 * @param name 
  	 */
  	protected abstract void writeTag(IMarkupWriter writer, IRequestCycle cycle, String name);
  	
      protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
      {
          IForm form = getForm(cycle);
  
          if (form.wasPrerendered(writer, this))
              return;
  
          boolean rewinding = form.isRewinding();
  
          String name = form.getElementId(this);
  
          setName(name);
  
          if (rewinding)
          {
              // Don't bother doing anything if disabled.
              if (isDisabled())
                  return;
  
              if (isClicked(cycle, name))
              	handleClick(cycle, form);
  
              return;
          }
  
          writeTag(writer, cycle, name);
      }
  
      void handleClick(final IRequestCycle cycle, IForm form)
      {
          if (isParameterBound("selected"))
              setSelected(getTag());
  
          final IActionListener listener = getListener();
  
          if (listener == null)
              return;
  
          Object parameters = getParameters();
      	if (parameters != null)
          {
          	if (parameters instanceof Collection) {
          		cycle.setListenerParameters(((Collection)parameters).toArray());
          	}
              else {
              	cycle.setListenerParameters(new Object[] {parameters});        	
              }
          }
          
          // Have a listener; notify it now, or defer for later?
  
          Runnable notify = new Runnable()
          {
              public void run()
              {
                  listener.actionTriggered(AbstractSubmit.this, cycle);
              }
          };
  
          if (getDefer())
              form.addDeferredRunnable(notify);
          else
              notify.run();
      }
  
      /** parameter */
      public abstract boolean isDisabled();
  
      /** parameter */
      public abstract IActionListener getListener();
  
      /** parameter */
      public abstract Object getTag();
  
      /** parameter */
      public abstract void setSelected(Object tag);
  
      /** parameter */
      public abstract boolean getDefer();
      
      /** parameter */
      public abstract Object getParameters();
  }
  
  
  
  1.4       +24 -0     jakarta-tapestry/framework/src/documentation/content/xdocs/tapestry/ComponentReference/ImageSubmit.xml
  
  Index: ImageSubmit.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/documentation/content/xdocs/tapestry/ComponentReference/ImageSubmit.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ImageSubmit.xml	9 May 2005 14:45:15 -0000	1.3
  +++ ImageSubmit.xml	15 May 2005 04:48:40 -0000	1.4
  @@ -169,6 +169,30 @@
         before the enclosing &Form;'s listener.
       </td>
      </tr>
  +   <tr>
  +    <td>parameters</td>
  +    <td>Object</td>
  +    <td>in</td>
  +    <td>no</td>
  +    <td>&nbsp;</td>
  +    <td>ognl</td>
  +    <td>
  +      Parameter(s) gathered at the time the button is triggered, 
  +      supplied as listener parameters in the IRequestCycle
  +      available to the listener.  
  +      <p>
  +      If the parameter is a Collection, it will be converted to
  +      an Object array (to match the IRequestCycle getListenerParameters()
  +      signature).
  +      </p>
  +      <p>
  +      Allows deferred listeners 
  +      (defer = true) access to any rewind state not conveniently
  +      placed using tag/selected (e.g. when there are multiple objects
  +      to select as might happen with a nested Foreach).
  +      </p>
  +    </td>
  +   </tr>
      
   	</table>
     
  
  
  
  1.4       +24 -0     jakarta-tapestry/framework/src/documentation/content/xdocs/tapestry/ComponentReference/Submit.xml
  
  Index: Submit.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/documentation/content/xdocs/tapestry/ComponentReference/Submit.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Submit.xml	9 May 2005 14:45:15 -0000	1.3
  +++ Submit.xml	15 May 2005 04:48:40 -0000	1.4
  @@ -150,6 +150,30 @@
         before the enclosing &Form;'s listener.
       </td>
      </tr>
  +   <tr>
  +    <td>parameters</td>
  +    <td>Object</td>
  +    <td>in</td>
  +    <td>no</td>
  +    <td>&nbsp;</td>
  +    <td>ognl</td>
  +    <td>
  +      Parameter(s) gathered at the time the button is triggered, 
  +      supplied as listener parameters in the IRequestCycle
  +      available to the listener.  
  +      <p>
  +      If the parameter is a Collection, it will be converted to
  +      an Object array (to match the IRequestCycle getListenerParameters()
  +      signature).
  +      </p>
  +      <p>
  +      Allows deferred listeners 
  +      (defer = true) access to any rewind state not conveniently
  +      placed using tag/selected (e.g. when there are multiple objects
  +      to select as might happen with a nested Foreach).
  +      </p>
  +    </td>
  +   </tr>
   	</table>
     
   <p>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org