Mathias,
Thanks for your interest and proposed contribution.
Yes, HtmlDataTableHack is not nice. I'm not at all a friend of such
hacks but in this case there is no alternative. You cannot derive
UIData from a proprietary UIDataBase because:
1. The API documentation of the javax.faces.* classes is part of the
JSR-127 specification. Therefore the signature of our UIData must
exactly match the specified UIData.
2. UIDataBase would make dependencies even worse. HtmlDataTable would
be derived from UIData (it must be according to the spec) and would
use methods from UIDataBase. So, every component derived from
HtmlDataTable or our extended HtmlDataTable itself would depend on the
MyFaces javax.faces.* classes and would no longer be compatible to
other JSR-127 APIs!

Well, the reason for the HtmlDataTableHack is, that we otherwise would
not have (protected) access to the internal DataModel. But our
extended HtmlDataTable needs access to it to be able to save the state
of the DataModel and restore it.

The good news is: we are working on this issue in the JSR-252 expert
group (= JSF 1.2) and there will a simple solution for this.  ;-)

Regarding code redundancy: Yes, I hate it too. And even though I'm a
blooded java developer, sometimes an #include would be a nice thing. 
;-)
Hope there is no C guy listening...  :-)

-MG

Reply via email to