[prev in list] [next in list] [prev in thread] [next in thread] 

List:       tapestry-user
Subject:    Re: Dynamic pages (or: arguments to pages) [T4]
From:       Kaspar Fischer <fischerk () inf ! ethz ! ch>
Date:       2007-11-28 23:31:19
Message-ID: E9AFACB3-5EF2-4694-9A83-E51A31D45024 () inf ! ethz ! ch
[Download RAW message or body]

Unfortunately, my solution does not really work yet. My page
uses

   @InjectObject("infrastructure:request")
   public abstract WebRequest getRequest();

   public void pageBeginRender(PageEvent event)
   {
     super.pageBeginRender(event);

     WebRequest request = getRequest();
     id = request.getParameterValue("id")); // (*)
   }

to read the Id of the page to display. This indeed works:

   http://localhost/app?id=someid

results in id from (*) being set to "someid".

I now wanted to support friendly URLs and wrote a ServiceEncoder
whose decode() method extracts the Id form a URL like

   http://localhost/node/id.html

and sets it:

   public void decode(ServiceEncoding encoding)
   {
     // ...
     String id = // ...

     encoding.setParameterValue(ServiceConstants.SERVICE,  
Tapestry.PAGE_SERVICE);
     encoding.setParameterValue(ServiceConstants.PAGE, _className);
     encoding.setParameterValue("id", id);
}

But although the variable encoding contains the parameter "id"
with its value (I verifed this), the page's pageBeginRender() from
above receives null.

I feel I misunderstand something here. Why are parameters not
passed on to the page request?

Many thanks,
Kaspar

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic