I just checked in some very nice changes for Tapestry 5.2; you can now easily store data about a page in the URL as query parameters:
@ActivationRequestParameter private String name;
By annotating a page (not a component!) field this way, the field will be mapped to the query parameter "name". When a page render link or component event link for the page is created, the current value of the field will be added as parameter "name". When that link is triggered to form a request, the parameter will be read and the field updated from the query parameter value.
It isn't limited to strings ... it uses the whole ValueEncoder machinery so that you can encode numbers or even Hibernate entities (represented in the URL as their primary key).
Cool stuff, if I do say so myself. Even I'm still learning how to flex the massive amount of meta-programming muscle that Tapestry provides. It turns out that the combination of component method advice with custom events triggered on the page can do some really sophisticated things!
That's a very nice addition and one everyone could leverage pretty well... but what an ugly theme for your blog! ;)
ReplyDeleteHow would you this functionality in Tapestry 5.0 ?
ReplyDeleteI need to access HTTP parameters from onActivate()
Richard ... this is not a Tapestry support forum. We've got mailing lists for that. Please see http://catb.org/esr/faqs/smart-questions.html .
ReplyDelete