Hi All,

I've been reading chapter about "Page Activation Context" here:
http://tapestry.apache.org/tapestry5/tapestry-core/guide/pagenav.html. And I
have a question: can I pass using activation context more than one
parameter?

For example in help we have an example:

void onActivate(long productId) {
   setProductId(productId);
   loadProduct();
}

long onPassivate() {
  return getProductId();
}

Also it was mentioned onPassivate method should be like a mirror of
onActivate. Does it means I can't pass more than one parameter?
Another approach I tried is it create another Java Bean (wrapper object) and
simple try to pass this bean via activation context. In that case my
onActivate and onPassivate were:

void onActivate(PageWrapper wrappedData) {
        System.out.println("Activated with message: " + wrappedData);
        setWrapper(wrappedData);
    }

PageWrapper onPassivate() {
        System.out.println("Page is passivated.");
        return getWrapper();
}

As the result I got exception. From URL I understood that Typestry during
passing parameter via activation context is converting it to get request. In
my case for wrapped object URL was:
http://localhost:8080/t5first/second/com.packtpub.t5first.utils.PageWrapper%40307efc
After looking to that URL I realized that T5 just call toString of passed
object :-)
So my additional questions:
1) Why not allow to user pass his own objects (POJO)?
2) Why not pass data via HTTP POST? Because as far as I know HTTP (at least
some browsers and http servers) has some limitations to the length of URLs.
Besides sooner or later some smart users will pass string with a  few Kbytes
and the page will get wrong data (truncated).

Reply via email to