The following text was added to the Pre/PostValdiateEvent API doc:
When an instance of this event is passed to
SystemEventListener.processEvent(javax.faces.event.SystemEvent) or
ComponentSystemEventListener.processEvent(javax.faces.event.ComponentSystemEvent),
the listener implementation may assume that the source of this event
instance is the UIComponent instance that is that has just been validated.
Note that iterating components such as UIData, and form components
such as UIForm must publish this event after processing their children
nodes in UIComponent.processValidators(javax.faces.context.FacesContext).
Does this mean that only input, UIData and UIForm components will
deliver these events?
If so, some concerns about this:
1. Mojarra 2.0 delivered these events for all components.
2. The Mojarra trunk still does this (see
UIComponentBase.processValidators()).
3. This prevents mutti-component validation where a listener is
registered on an arbitrary ancestor component.
For an example of #3, see the "Multi-Component Validation" section of
Core JavaServer Faces, 3rd ed:
http://my.safaribooksonline.com/9780137013968/331#X2ludGVybmFsX0ZsYXNoUmV...
Note that the PostValidateEvent listener is registered on an
h:panelGrid. With the new addition to the specification, it seems that
this is no longer supported.
Andy