Tapestry 5
  1. Tapestry 5
  2. TAP5-1190

New page-level events to "decorate" component event and page render links

    Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 5.2.0
    • Fix Version/s: 5.2.0
    • Component/s: tapestry-core
    • Labels:
      None

      Description

      This is based on some customer work.

      Customer really wanted URLs to include a series of (optional) values as query parameters, not path info ... which makes sense, because you'd have a category filter sometimes, a name filter sometimes, etc.

      Anyway, this worked fine in most cases ... there's a method on the page to act like the passivate event handler, but return a Link with the query parameters added. The active event handler would extract the query parameters and store them inside fields.

      Got trickier handling event links; had to modify some low-level components to fire a "decorateLink" event so that the page's event handler could add the query parameters to the link.

      It would be nice if these concepts were inside Tapestry; that after generating a Link via the passivate event (or by building a Link using a supplied page activation context) that an optional event (perhaps called "decorateLink") would be triggered to add these extra query parameters.

      Ideally, there would be two events, "decoratePageRenderLink" and "decorateComponentEventLink". The first parameter would be the Link to decorate. The second would be the PageRenderRequestParameters or ComponentEventRequestParameters, as appropriate. This would give the event handler method enough information to decide whether to decorate the link, and what information to put into it.

        Activity

        Hide
        Howard M. Lewis Ship added a comment -

        A powerful new addition to Tapestry puts URL query parameters on nearly equal footing with extra path information

        Show
        Howard M. Lewis Ship added a comment - A powerful new addition to Tapestry puts URL query parameters on nearly equal footing with extra path information
        Hide
        Vjeran Marcinko added a comment -

        Would it be useful for QueryParameterMapped annotation to have some "required" argument to specify that this query parameter is required, or the policy is that required arguments should go to page activation context?

        I'm asking this because I don't care in my web apps whether "page parameters" are passed as path info or query parameters, but since I can see that this way is more powerful because parameters can be named and optional, and using annotation way is much more clear than using methods for setting and extracting them (@PageActivationContext is nice but it only works for single parameter), I will probably end up using this new way all the time instead of activation context.

        Show
        Vjeran Marcinko added a comment - Would it be useful for QueryParameterMapped annotation to have some "required" argument to specify that this query parameter is required, or the policy is that required arguments should go to page activation context? I'm asking this because I don't care in my web apps whether "page parameters" are passed as path info or query parameters, but since I can see that this way is more powerful because parameters can be named and optional , and using annotation way is much more clear than using methods for setting and extracting them (@PageActivationContext is nice but it only works for single parameter), I will probably end up using this new way all the time instead of activation context.
        Hide
        Hudson added a comment -

        Integrated in tapestry-5.2-freestyle #148 (See http://hudson.zones.apache.org/hudson/job/tapestry-5.2-freestyle/148/)

        Show
        Hudson added a comment - Integrated in tapestry-5.2-freestyle #148 (See http://hudson.zones.apache.org/hudson/job/tapestry-5.2-freestyle/148/ )

          People

          • Assignee:
            Howard M. Lewis Ship
            Reporter:
            Howard M. Lewis Ship
          • Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development