Neil Griffin is asking about the include-view-params attibute/element in faces-config.xml. I reply to his inquiry inline.

---------- Forwarded message ----------
From: Neil Griffin <neil.griffin@liferay.com>
Date: Sat, Aug 1, 2009 at 7:46 PM
Subject: Inconsistency between Spec and XSD for include-view-params
To: jsr-314-comments@jcp.org

Hi there again Guys,

Section 7.4.3 of the Spec has an example navigation-handler, which shows how to use the include-view-params feature:

<redirect>
 <view-param>
   <name>userId</name><value>someValue</value>
 </view-param>
 <include-view-params>true</include-view-params>
</redirect>

However, using <include-view-params> as an XML element is invalid according to web-facesconfig_2_0.xsd

Clearly they need to be made the same, one way or another.
 


But then, in section 7.4.2, the Spec talks about the "include-view-params" attribute on the <redirect /> element, like this:

<redirect include-view-params="true" />

The attribute syntax is what the XSD wants, and what Ryan's blog [1]) claims as well.

To be hones, I can't remember what the final decision was.
 

Having said that, if the attribute way is the right syntax, then I think there are two problems with it:

1. Although I prefer attribute-syntax for XML, the faces-config.xml file doesn't use XML attributes anywhere.Instead, it uses the verbose <element>#PCDATA</element> syntax. So having an attribute on <redirect /> is really inconsistent with the rest of the file.

False. The root element has "id", "version" and "metadata-complete" attributes. The "id" attribute is allowed on many other elements as well.
 

2. it's really inconsistent and weird to have dashes-in-the-name-of-an-xml-attribute. For example, we use camelCase for actionListener:

       <h:commandButton actionListener="#{myBean.actionListener}" />

Again, false. The dashes in the name of an XML attribute is standard for Java EE config files. See persistencexml. The others only have metadata-complete as an example.

3. The functionality/purpose of this include-view-parameters feature is really confusing. Does it mean:

       A. Include/exclude the f:viewParam stuff found in f:metaData of the from-view-id?
       B. Include/exclude the <view-param> children of the <redirect> element?
       C. Both A & B?

A.

The idea is that when constructing the URL to navigate to, should that URL be "enhanced" with the view parameters or should it be left as is. The <view-param> children of the <redirect> element are explicit and should never be left off. Otherwise, you wouldn't put them there. The view parameters are considered "magic" in this sense (i.e., not explicit).

-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://in.relation.to/Bloggers/Dan