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

Hidden field component that participates with validation (ValidationTracker)

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Incomplete
    • 5.3
    • None
    • tapestry-core

    Description

      Since Hidden is not tracked by the Validation Tracker, its value is lost when a page redirects to display validation errors. I'd like to see a new component, say Tracked. I guess it would be the same as Hidden and extend AbstractTextField or similar.

      Why? A common use case is to use Hidden for an entity's version field in a Form to provide optimistic locking. By using Tracked instead of Hidden I could do this...

      <form t:type="Form" t:id="person" >
      <t:tracked value="person.version"/>
      :
      </form>

      ...instead of this...

      <form t:type="Form" t:id="person" >
      <t:hidden value="person.version"/>
      :
      </form>

      // This carries version through the redirect that follows a server-side validation failure.
      @Persist(PersistenceConstants.FLASH)
      private Integer versionFlash;

      void onPrepareForRender() throws Exception {
      person = findPerson(personId);

      // If the form has errors then we're redisplaying after a redirect.
      // Form will restore your input values but it's up to us to restore Hidden values.

      if (form.getHasErrors())

      { person.setVersion(versionFlash); }

      }

      void onFailure()

      { versionFlash = person.getVersion(); }

      Thoughts?

      Geoff

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              geoffcallender Geoff Callender
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: