...
>
> Let's worry less about perfection and worry more about some simple
> changes that have huge payoffs. Once we have the basics down, we can
> tackle some of the more difficult aspects.
>
Okay, but does that really need a completely new sitemap implementation?
> The convention is {context}/{controller}/{action}[/{id}]
Well (assuming this sitemap was mounted for the context):
<map:match pattern="*/*/*">
<map:call function="handleControllerCall">
<map:parameter name="controller" value="{1}"/>
<map:parameter name="action" value="{2}"/>
<map:parameter name="id" value="{3}"/>
</map:call>
</map:match>
<map:match pattern="*/*">
<map:call function="handleControllerCall">
<map:parameter name="controller" value="{1}"/>
<map:parameter name="action" value="{2}"/>
</map:call>
</map:match>
The "handleControllerCall" function can be written in flowscript or even use
the great new java flow as shown by Torsten Curdt during the get together. Not
sure how that class reloading works, but if you put the controller classes in
the same path, I guess the reloading feature would work there as well. So, you
can do something like...:
if(action==null) action="index";
contr =
Package.org.apache.cocoon.util.ClassUtils.newInstance("controllers."+controller+"Controller");
if(id==null)
contr[action]();
else
contr[action](id); //well, a little more processing here to get the object
with this id first
cocoon.sendPage("views/"+controller+"/"+action);
Right?
max