Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Invalid
-
Affects Version/s: 1.7DR#2
-
Fix Version/s: None
-
Component/s: ICE-Components
-
Labels:None
-
Environment:Unknown
-
ICEsoft Forum Reference:
-
Workaround Exists:Yes
-
Workaround Description:HideBind the component and programmatically set the value on the component (each time the contents of the component changes):
dataTable.setValue(list);ShowBind the component and programmatically set the value on the component (each time the contents of the component changes): dataTable.setValue(list);
Description
This may affects ice:dataTable as well.
-
Hide
- Test_RowSelectorPanelSeries.war
- 5.63 MB
- Philip Breau
-
- META-INF/MANIFEST.MF 0.0 kB
- WEB-INF/classes/com/.../common/Person.class 2 kB
- WEB-INF/.../DataTablePaginatorBean$1.class 2 kB
- WEB-INF/.../DataTablePaginatorBean.class 4 kB
- WEB-INF/classes/.../table/SortableList.class 1 kB
- WEB-INF/classes/.../table/TableBean.class 4 kB
- WEB-INF/classes/.../messages.properties 22 kB
- WEB-INF/faces-config.xml 0.5 kB
- WEB-INF/html_basic.tld 244 kB
- WEB-INF/jsf_core.tld 25 kB
- WEB-INF/lib/backport-util-concurrent.jar 343 kB
- WEB-INF/lib/commons-beanutils.jar 116 kB
- WEB-INF/lib/commons-collections.jar 167 kB
- WEB-INF/lib/commons-digester.jar 140 kB
- WEB-INF/lib/commons-fileupload.jar 52 kB
- WEB-INF/lib/commons-logging.jar 31 kB
- WEB-INF/lib/el-api.jar 24 kB
- WEB-INF/lib/el-ri.jar 97 kB
- WEB-INF/lib/icefaces-comps.jar 1.48 MB
- WEB-INF/lib/icefaces.jar 744 kB
- WEB-INF/lib/jsf-api.jar 356 kB
- WEB-INF/lib/jsf-impl.jar 679 kB
- WEB-INF/lib/jstl.jar 20 kB
- WEB-INF/.../krysalis-jCharts-1.0.0-alpha-1.jar 151 kB
- WEB-INF/lib/standard.jar 384 kB
- WEB-INF/lib/xercesImpl.jar 1.15 MB
- WEB-INF/lib/xml-apis.jar 190 kB
- WEB-INF/web.xml 3 kB
- index.jspx 0.8 kB
- panelSeries.jspx 5 kB
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
...six months later Mark, could you please describe the work-around with re-queuing INVOKE APPLICATION/UPDATE MODEL. Where (lifecycleListener?) and how to do it right? And what about the "enhancement to help developers side-step this issue"?
Ok, let's say you have a rowSelector and input components, and need the rowSelector's selectionListener to be called in INVOKE_APPLICATION, so that the input components' submittedValues will be pushed into the bean, in UPDATE_MODEL, before the selectionListener is called.
The original solution was to do:
public void selectionListener(RowSelectorEvent event) {
if(!event.getPhaseId().equals(javax.faces.event.PhaseId.INVOKE_APPLICATION))
// Now do your processing
}
Then we added a feature to rowSelector, where you could set immediate="false" on it, and the selectionListener would be called in INVOKE_APPLICATION for you, without the re-queue code.
But, for other components, like input components and their valueChangeListener, there was no easy way of having them be called in INVOKE_APPLICATION. In ICEfaces 1.8 RC1 we introduced the ice:setEventPhase component, which is the general solution for changing what phase events will be broadcast in, and so the phase the listeners will be invoked in. You can still use immediate, but setEventPhase makes it unnecessary.
Actually I had the problem with BooleanCheckboxes in the <ice:dataTable>. If the underlying model changed (values were get and set properly), and the number of checkboxes stayed the same the view didn't reflect the model. I hacked it temporary by adding the valueChangeListener like:
public void valueChangeListener(ValueChangeEvent event){
if(!event.getPhaseId().equals(javax.faces.event.PhaseId.INVOKE_APPLICATION))
HtmlSelectBooleanCheckbox checkbox = (HtmlSelectBooleanCheckbox) event.getSource();
checkbox.setId("checkbox" + checkboxId++); //change of id forces icefaces to redraw the component
}
Is there any other (proper) way to force the icefaces to redraw the component? I know that ASP.NET controls have Render() method.
The components are already redrawing themselves. As this Jira explains, the problem is that the UIData containers are storing the old values for the components. You have to call getSavedChildren().clear() on the UIData/UISeries parents if you update your model values.
To Wladyslaw Bultrowicz, immediate="false" on row selector didn't resolved your problem?
In our master-detail view it helps.
I have also run into the same issue, the I have 2 panelseries nested to show a set of images in a 2 dimensional matrix(when a set of checkboxes are clicked), If i use a single panel series it works but all the images shows up in a single row. Using the nested panelseries with nested beans solves the problem half way first time all the images gets rendered, but when the checkbox is clicked. When i uncheck the checkbox the image disappears if the full row is unchecked but, when i check it again it somehow remebers the whole row.