Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-523

Submit component should be able to render an input field of type image

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 5.0.15
    • 5.1.0.0
    • None
    • None

    Description

      The Submit component has two major deficiencies:
      1) You cannot use an image submit ( <input type="image" /> )
      2) You cannot pass any context into the button's "selected" event handler.

      Issue 1 currently requires you to create your own submit button type, though this is simple if you don't mind copy/pasting the current Submit class and changing one line.

      Issue 2 is a much bigger problem. If you have a submit button in a loop and need to know (for example) which item was current in the loop when it was rendered, you have to set "defer" to false, then record the context information in your onSelected handler. You often can't perform a useful action directly in your deferred onSelected handler because you shouldn't change the structure of your bound data in the middle of a form submit, or because you should not perform your action until you're assured the form has validated.
      So, you now have to record the context that you need to perform the action, PLUS the action that needs to be performed, and then perform it all inside of your onSuccess handler! Frankly, this seems so inelegant as to have been an oversight.

      On the Tapestry Wiki, at http://wiki.apache.org/tapestry/Tapestry5SubmitContextComponent there is a basic implementation, though it has several weaknesses:
      1) It was written for 5.0.4 and doesn't compile without changing a few minor things, nor does it support RenderDisabled.
      2) It only supports a single context parameter and it makes no effort to properly encode it when rendered to the client.

      So, based on the concept used on the wiki code (namely, using a <hidden> field to store the context) I made a few small modifications to the Tapestry 5.0.11 Submit.java class that I will attach to this issue.

      I grant ownership of the attached code to the Apache Software Foundation.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            igor.drobiazko Igor Drobiazko
            igor.drobiazko Igor Drobiazko
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment