Mathias Brökelmann wrote:
uicolumn components can contain header and footer facets. But these
facets must be handled by the parent uidata since they are only
processed one time and not for every row.
UIColumn could define something like processHeaderDecodes() which is
called by parent UIData. but that would require a lot of new methods
in UIColumn.
Thanks Mathias. I see that the difference between the way the facets of
each UIColumn (header/footer) have to be invoked (once per table) and
the way the other children of UIColumn have to be invoked (once per row)
makes things awkward.
I still believe that the current solution is ugly and that UIColumn
should be managing its own children rather than UIData accessing them.
However as you indicate that would require some significant API changes
somewhere. As the "public final draft" for JSF 1.2 has been issued, and
about 80% of the JCP participants have already voted on it (including
Apache) I guess there isn't much point in following this up.
Anyway, there does appear to be a workaround (though it's not very
elegant) involving having my custom UIColumn class dynamically add a
dummy child to itself, where this child simply forwards processDecodes
calls back to the parent UIColumn.
Cheers,
Simon