Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 1.6.1
-
Component/s: ICE-Components
-
Labels:None
-
Environment:win xp
-
ICEsoft Forum Reference:
-
Workaround Exists:Yes
-
Workaround Description:use a tabChangeListener to update the selectedIndex bean setter manually.
Description
The PanelTabSet doesn't synchronize tabChange events with the selectedIndex valueBinding if there is one.
suggested fix:
Index: D:/Documents and Settings/pbreau/workspace/ICEfaces/component/src/com/icesoft/faces/component/paneltabset/PanelTabSet.java
===================================================================
--- D:/Documents and Settings/pbreau/workspace/ICEfaces/component/src/com/icesoft/faces/component/paneltabset/PanelTabSet.java (revision 14824)
+++ D:/Documents and Settings/pbreau/workspace/ICEfaces/component/src/com/icesoft/faces/component/paneltabset/PanelTabSet.java (working copy)
@@ -279,6 +279,10 @@
TabChangeEvent tabChangeEvent = (TabChangeEvent) event;
if (tabChangeEvent.getComponent() == this) {
setSelectedIndex(tabChangeEvent.getNewTabIndex());
+ if( getValueBinding("selectedIndex") != null ){
+ getValueBinding("selectedIndex").setValue(this.getFacesContext(), Integer.valueOf(tabChangeEvent.getNewTabIndex()));
+ }
+
//getFacesContext().renderResponse();
}
}
suggested fix:
Index: D:/Documents and Settings/pbreau/workspace/ICEfaces/component/src/com/icesoft/faces/component/paneltabset/PanelTabSet.java
===================================================================
--- D:/Documents and Settings/pbreau/workspace/ICEfaces/component/src/com/icesoft/faces/component/paneltabset/PanelTabSet.java (revision 14824)
+++ D:/Documents and Settings/pbreau/workspace/ICEfaces/component/src/com/icesoft/faces/component/paneltabset/PanelTabSet.java (working copy)
@@ -279,6 +279,10 @@
TabChangeEvent tabChangeEvent = (TabChangeEvent) event;
if (tabChangeEvent.getComponent() == this) {
setSelectedIndex(tabChangeEvent.getNewTabIndex());
+ if( getValueBinding("selectedIndex") != null ){
+ getValueBinding("selectedIndex").setValue(this.getFacesContext(), Integer.valueOf(tabChangeEvent.getNewTabIndex()));
+ }
+
//getFacesContext().renderResponse();
}
}
Issue Links
- is duplicated by
-
ICE-2187 panelSeries/dataTable bug - tab selection in one row automatically selects the same tab in other rows
- Closed
Seam has problem with component-binding unless the bean is session-scoped. (not practical). So to use value binding, the selectedIndex has to have value binding available to selectedIndex property.
would be nice to have the option to use valueBinding for this property for ease of use with seam (as well as MVC)
Mark's adhoc fixes worked great and simplified the Bean & xhtml page immensely when he modified the getters and setters of com.icesoft.faces.component.paneltabset as follows:-
/**
*/
void setSelectedIndex(Integer selectedIndex) { System.out.println("PanelTabSet.setSelectedIndex(I="+selectedIndex+")"); if(selectedIndex == null) _selectedIndex = selectedIndex; else setSelectedIndex(selectedIndex.intValue()); }
/**
*/
public void setSelectedIndex(int selectedIndex) {
System.out.println("PanelTabSet.setSelectedIndex(i="selectedIndex")");
ValueBinding vb = getValueBinding("selectedIndex");
boolean worked = false;
if(vb != null)
if(!worked)
{ _selectedIndex = new Integer(selectedIndex); System.out.println("PanelTabSet.setSelectedIndex() field set"); }}
/**
*/
public int getSelectedIndex()