I've been meaning to file this issue for a while. I always seem to remember when I am on stage giving a presentation, but not when at my computer :(
The <view-param> element that was introduced as a child of the <redirect>
element was supposed to be called <redirect-param>. Unfortunately, something got
lost in translation and the terminology for "view parameters" got mixed up with
redirect parameters. (I take the blame for not following up with a review of this
topic in the spec document prior to final release).
I'll explain the difference. A view parameter is a mapping between a request
parameter and a bean property and is associated with a particular view ID. If
you are linking or redirecting to that view ID, you can have those mappings run
in reverse to build a query string. This is activated with the "include view
parameters" switch on the link (UIOutcomeTarget) component or <redirect> element.
A redirect parameter in the navigation is equivalent to an <f:param> on a button
or link. It is a manual setting, which may (or may not) override the value of a
view parameter. A perfect example is when you want to create a link to the
previous page of a paginated list. You manually override "page" so that it is
one less than the current page. <f:param name="page" value="#{nav.page - 1}"/>
<view-param> has no business being a child of <redirect> and should be renamed
to <redirect-param>.
<navigation-case>
<from-action>#{editor.save}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/entry.xhtml</to-view-id>
<redirect>
<redirect-param>
<name>id</name>
<value>#{entry.id}</value>
</redirect-param>
</redirect>
</navigation-case>
If you wanted to let view parameters manage the value of the "id" request parameter, it would be:
<navigation-case>
<from-action>#{editor.save}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/entry.xhtml</to-view-id>
<redirect include-view-params="true"/>
</navigation-case>
/entry.xhtml
<f:view>
<f:metadata>
<f:viewParam name="id" value="#{entry.id}"/>
</f:metadata>
...
</f:view>
See the difference?
-Dan
--
Dan Allen
Senior Software Engineer, Red Hat | Author of Seam in Action
Registered Linux User #231597
http://mojavelinux.com
http://mojavelinux.com/seaminaction
http://www.google.com/profiles/dan.j.allen