Re: Dynamic pages (or: arguments to pages) [T4]

2007-11-29 Thread Ulrich Stärk

These are just guesses, I haven't tried them nor verified them.
I could imagine that the parameter isn't available via the WebRequest 
because the page didn't get called by a GET request directly but with 
the help of the service encoder, so your parameter isn't there anymore 
when the page get's rendered. Try to get hold of the IRequestCycle by 
calling getRequestCycle() and call getParameter on it. I wouldn't be 
surprised if it's in there.


Cheers,

Uli

Kaspar Fischer schrieb:

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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Dynamic pages (or: arguments to pages) [T4]

2007-11-29 Thread Kaspar Fischer


On 29.11.2007, at 11:02, Ulrich Stärk wrote:


These are just guesses, I haven't tried them nor verified them.
I could imagine that the parameter isn't available via the  
WebRequest because the page didn't get called by a GET request  
directly but with the help of the service encoder, so your  
parameter isn't there anymore when the page get's rendered. Try to  
get hold of the IRequestCycle by calling getRequestCycle() and call  
getParameter on it. I wouldn't be surprised if it's in there.


Hi Uli,

That was it! It turns out that the

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

is not needed anymore with this solution.

Thanks a lot for the help,
Kaspar

P.S. For the sake of completeness, here is the complete
solution -- in case somebody else needs it.

public abstract class MyPage extends BasePage
  implements PageBeginRenderListener {

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

// find out the node we're suppost to show
IRequestCycle cycle = getRequestCycle();
String myParam = cycle.getParameter(myParam);
  }

  // ...
}

public class KCNodeServiceEncoder implements ServiceEncoder {
  // ...

  public void decode(ServiceEncoding encoding)
  {
// ... (get parameter value from URL)

encoding.setParameterValue(myParam, value);
  }
}
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Dynamic pages (or: arguments to pages) [T4]

2007-11-28 Thread Kaspar Fischer

Ulrich, Andy, Jesse, Jonathan, and Andy, thanks a lot for
the many responses and tips!

I am using T4 and have implemented it by injecting the web
request into my page and using a URL encoder for friendly URLs.

Regards,
Kaspar

On 27.11.2007, at 01:54, Andy Huhn wrote:


Kaspar,

If you're using T5, see

http://tapestry.apache.org/tapestry5/tapestry-core/guide/pagenav.html

Especially the section titled Page activation.

Andy

On Mon, 2007-11-26 at 19:49 +0100, Kaspar Fischer wrote:

Hi All,

I am new to Tapestry and would be glad to receive a hint on how to
realize
dynamic pages, i.e., pages whose content depends on GET arguments.

I have a database full of articles, each having an Id, and I want to
show each article on its own page. In PHP, I would have used URLs  
like


   http://my.organization.org/app?page=articleid=2832

to display article with Id 2832.

I am not quite sure what the Tapestry way for such a problem is. I've
coded a page ArticlePage that extends BasePage and now need a way to
learn the Id from the URL. How can I do this?

Many thanks,
Kaspar

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Dynamic pages (or: arguments to pages) [T4]

2007-11-28 Thread Kaspar Fischer

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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]