detailStamp facet in the last row not decoded/validated/updated
---------------------------------------------------------------
Key: TOMAHAWK-493
URL: http://issues.apache.org/jira/browse/TOMAHAWK-493
Project: MyFaces Tomahawk
Type: Bug
Versions: 1.1.2
Reporter: Val Blant
There is a problem with the state saving algorithm in
org.apache.myfaces.component.html.ext.HtmlDataTable. setRowIndex(int) method
saves the state of the component in the context of the previous index and then
retrieves the appropriate state for the component in the context of the current
index. This ensures that components will have appropriate values for each row
before doing the work for any given phase.
The problem is that this algorithm will never store the state of the very last
row on the current page. This can be easily verified if you put some input
fields into the detailStamp facet, expand the last row on the page, update a
value and do something to cause a postback. The values in the facet will revert
back to what they were before and the model will not be updated.
The fix to this is simple:
In processDetails() method, after this line:
"process(context,facet,processAction);" put:
if ( rowIndex == (last - 1) ) {
Set set = new HashSet();
set.add(facet);
hidableRowStates.put(
getClientId(FacesContext.getCurrentInstance()),
saveDescendantComponentStates(set.iterator(),false));
}
This if-statement defines the special case that stores the state of the facet
in the last row on the page.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira