Hi Tapestry users and devs, this is my first question here and I use Tapestry for only three days now, so excuse my question if there is already a documented answer.
Suppose, I want to implement an online store with Tapestry. I like to have the following URLs: * /articles/ list all articles available * /articles/{a-id}/ show one article * /customers/ list all customers * /customers/{c-id}/ show one customer * /customers/{c-id}/orders/ list all orders of the customer * /customers/{c-id}/orders/{o-id}/ show one order of the customer If I create a class Articles under the pages package, I can implement the /articles/ URL. But than, the /articles/{a-id}/ URL will also point to the Articles page. The a-id will be the activation context of the Articles page. I could fork between displaying one article and displaying a list of all articles in one page, but I don't like to do that and I don't think one should use Tapestry this way. So I need a separate page for displaying one article. I like to have an Articles page without activation context and an Article page with activation context. I can do so but than I end up with the following URLs: * /articles/ * /article/{a-id}/ This breaks the hierarchy, I want to install. I want hackable URLs [1] so they have to be hierarchical. The next best thing I could do is create a articles package under pages and put there an Index page and a Article page. This would give me: * /articles/ * /articles/article/{a-id}/ This is not bad but the additional article path is just redundant. To remove this redundant part, I used an URLRewriterRule. Without posting the code here, I simply added the article part in the inbound filter and removed it in the outbound one. This works finally and I get my URL scheme: * /articles/ * /articles/{a-id}/ But I have not tested my filter with action and event links yet and it is still possible to access articles under /articles/article/{a-id}/ so I have to add a filter which redirects to the /articles/{a-id}/ URL because I don't want that someone bookmarks this not official supported /articles/article/{a-id}/ URL. The next big thing are the customer URLs described above. I think I could hack some combination of URLRewriterRules and Pages which parse two ids out of one activation context, but I don't like to missuse well thought out architectures. Thanks for your help Alex [1]: <http://www.useit.com/alertbox/990321.html> -- e-mail: alexanderk...@gmx.net web: www.alexanderkiel.net
signature.asc
Description: This is a digitally signed message part