I'm a new T5 user so wasn't familiar with the pattern below for adding
params to links, I'll definitely try it out.
However, If you go down the route you suggest below for passing
parameters between page, then what is the true value in the activation
context in the first place other than for the most simple of
requirements - (given that it seems unwieldy for large numbers of
parameters) ?
Additionally, I would suggest that *how* activation context parameters
are encoded onto the URL should be configurable, so you could choose to
encode your activation parameters like this a/b/c/d or like this a=b&c=d
, or any other encoding mechanism you want.
I really want to like the T5 framework, and in my limited experience (4
days!) I think I do, especially because it seems much leaner and more
scalable than say Wicket, something I have used more extensively and
which because of its component based nature, and lack of page pooling,
creates and enormous amount of objects per page request which then need
to be cleaned up - a bit wasteful if you are only creating stateless pages.
However I was quite suprised by what that I saw as a gap in native (out
the box & convenient & maintainable) support for truly stateless pages
in T5. As a stop gap I have got round the problem by writing a custom
ValueEncoder to encode and decode HashMap objects onto the activation
context, as a string like this key1_value1_key2_value2 etc, that way I
work within the framework but with full support for named parameters.
I think the ideal solution (for an end user at least!) would be to make
it such that the @Persist("client") notation did all the hard work of
encoding primitive params on to a query sting, but more concisely that
it currently does
i.e. what cann't a primitive variable such as
@Persist("client")
private String name;
be simply encoded onto the url as "name=value" rather than the current
solution of an enourmously long encoded value?
If this were to happen then I think T5 really would be a truly great
framework!
Thx,
Joel
Geoff Callender wrote:
I'm not keen on the named context parameters idea. There's a
persuasive argument for putting filter parameters into the query
string portion of the URL instead of in the context.
http://blpsilva.wordpress.com/2008/04/05/query-strings-in-restful-web-services/
So you get a URL like this
http://localhost:8080/myapp/mypage?firstname=Humpty&lastname=Dumpty
instead of this
http://localhost:8080/myapp/mypage/firstname/Humpty/lastname/Dumpty
It's easy enough to do:
@Inject
private ComponentResources _componentResources;
@Inject
private Request _request;
public Link set(String firstName, String lastName) {
Link link =
_componentResources.createPageLink(this.getClass(), true);
if (firstName != null) {
link.addParameter("firstname", firstName);
}
if (lastName != null) {
link.addParameter("lastname", lastName);
}
return link;
}
void onActivate() {
_firstName = _request.getParameter("firstname");
_lastName = _request.getParameter("lastname");
}
On 11/10/2008, at 12:37 AM, Joel Halbert wrote:
I tend to try and keep all my pages as stateless as possible, you can
then quite easily require a few query string parameters per page when
this is the case, consider the case of browsing a storefront - you
need a "category id" (e.g. books, shoes), a page number (for the
current page if looking at paginated data) and a "sort by" field (for
the clients sort by selection). Already we have 3. There can easily
be more, say if the client is "filtering" the view.
Thiago H. de Paula Figueiredo wrote:
Em Fri, 10 Oct 2008 09:58:23 -0300, Joel Halbert
<[EMAIL PROTECTED]> escreveu:
I was wondering whether anyone missed the lack of direct support
for named context parameters?
I try to keep my pages as stateless as possible (thus bookmarkable)
and better support for "named" context variables would make this
much easier.
I haven't missed named context parameters because my pages, almost
all the time, need just one parameter, sometimes two, so there is no
need to name them.
--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London
Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com
SU3 Analytics Ltd is a company registered in England and Wales under
company number 06639473 at registered address 61b Oxford Gardens,
London W10 5UJ, United Kingdom.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
SU3 Analytics Ltd
61b Oxford Gardens
W10 5UJ
London
Tel: +44 20 8960 2634
Mob: +44 75 2501 0825
www.su3analytics.com
SU3 Analytics Ltd is a company registered in England and Wales under company
number 06639473 at registered address 61b Oxford Gardens, London W10 5UJ,
United Kingdom.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]