I think it is time to propose a new axiom relating to boolean
properties.  I would name it after Blake, who first called this truth
to my attention:

Blake's Axiom of Boolean Properties:  You will regret making your
property a boolean.

:-)

In this particular case, I am thinking about the UIData
"rowStatePreserved" boolean property that we added in JSF 2.1.  This
currently has two values:

1.  true: UIData performs state saving (ideally partial state saving)
to save away row-specific properties.
2.  false: UIData uses the old hacky mechanism for saving row-specific
state (special casing EditableValueHolders and what not).

In retrospect, it sure would have been nice to allow for a third value:

3.  none:  Don't make any attempt at state saving.

Though now that UIData is stuck with a boolean type for this property,
we don't have a simple way to support #3 (for UIData) that doesn't
involve adding yet another attribute.

In any case, I think it is fine to support this optimization one way
or another (eg. along the lines discussed above).

Of course, the magical ideal solution would be to come up with some
clever way to automatically pick the best behavior.  Or, failing that,
it might be good to warn developers when they specify potentially
conflicting values (such as disabling state saving for tables that
stamp EditableValueHolders.)

Andy

Reply via email to