Konstantin Piroumian wrote:
>Hi, team!
>
>I'd like to propose to add a <map:forward path="" /> node to sitemap.
>Behavior should be the same as <map:redirect-to uri="cocoon:/..." />.
>As redirect and forward are absolutely different in servlet environment then
>it would be better to have separate elements for them. I'd leave
><map:redirect-to /> for real redirects (with 302 status code) and use
><map:forward /> for all internal forwards.
>
>IMHO, forwarding is more obvious then redirect to 'cocoon:/...' uris and
>this will reduce the number of questions in users list about the redirection
>and its parameters. Also, I'd like to propose to add parameters support to
><map:forward />:
>
><map:forward path="next">
> <map:parameter name="page" value="{page}" />
></map:forward>
>
>What do you think?
>
<stripping-noisy-discussion>
Wow, wow, so much noise such a "small" change proposal !!
First of all, I'd like to recall the difference between a forward (or
internal redirect) and a resource :
- a resource is a named pipeline-snippet that is used to factorize some
common constructs in a sitemap. Nothing more, nothing less ! The name of
a resource is purely internal to the sitemap that declares it and only
visible from that sitemap (and not its components). There is no pattern
matching or anything else on a resource name.
- a forward is a new request to the Cocoon engine that doesn't go back
to the client browser. This request is a real request with a real URI
that is processed in the exact same way as external requests. The
difference with an external redirect is that some enviroment data is
kept during the forward operation : request and environment attributes
for example.
So a <map:call> and a <map:redirect> *have nothing in common* !
As for the flow engine, I highly encourage people to go to
scratchpad/schecoon and look at what's inside. This discussion shows
that few people did it (no offense here, just an encouragement for you
to look there).
The flow engine uses forwards/internal redirects to display the pages.
It _used_ resources before internal redirect was available and there's
still some code for this, but it *will be removed*. The *only* contract
for calling the sitemap are requests, be there internal or external, and
their URI. More formally, this contract is the
org.apache.cocoon.Processor interface.
Now I'm +1 for this proposal. This makes the difference between external
redirects and forwards more visible and avoids a "cocoon:" notation that
may look strange to beginners. Also, a lot of users are used to the
servlet API that clearly distinguishes redirects and forwards.
But to make things clear : <map:forward> is only another notation.
<map:redirect-to uri="cocoon:/..."> will always be available. This is
required if we want an action or the flow engine to be able to choose
between forwards or external redirects.
Cheers,
Sylvain
--
Sylvain Wallez
Anyware Technologies Apache Cocoon
http://www.anyware-tech.com mailto:[EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]