Home

Advertisement

TabbedPane Bug Fixes

I found and fixed a couple pretty serious bugs in the processDecodes and saveDescendentState methods of UITabbedPane. These bugs resulted in the following behavior:

  • ValueChangeListeners, converters, and validation listeners were applied to the new tab instead of the tab that was just visible, which mean:
    • Events do not fire correctly
    • Request values are not applied correctly
    • Hibernate LazyInitializationExceptions if your tabs are backed by lazy loading entities
  • EditableValueHolder value bindings were evaluated during APPLY REQUEST VALUES, which causes:
    • Hibernate LazyInitializationExceptions if your tabs are backed by lazy loading entities
    • Unpredictable results (when combined with the above behavior)
  • Value binding expressions to be stored as local values, thus preventing evaluation after INVOKE APPLICATION

These have all been resolved with some very minor changes to code. Additionally, I've added some static methods to UITabbedPane, findTabbedPaneAncestor and findTabbedPaneDescendent, that are useful for obtaining a reference to an enclosing or enclosed UITabbedPane component (since component binding is not yet available). I've also added the ability to set the selected tab index programmatically via a new setSelectedTabIndex method on UITabbedPane.

The distribution package has been updated. It can be found here:

sweetfaces.tar.gz

The next update will improve facelets support by adding true property accessors to UITabbedPane and UITab to avoid "attribute XXX not found" warnings, and by removing the "Invalid child component of UITabbedPane" messages (which happen as a result of the UIInstruction components inserted by facelets).

Tags: ,

Comments

January 2007

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28293031   
Powered by LiveJournal.com

Advertisement

Customize