[ http://issues.apache.org/jira/browse/MYFACES-522?page=all ]
Mathias Broekelmann closed MYFACES-522:
---------------------------------------
Resolution: Cannot Reproduce
problem can not be reproduced with the current nightly.
> PreserveDataModel not working (java.lang.IllegalArgumentException: row is
> unavailable)
> --------------------------------------------------------------------------------------
>
> Key: MYFACES-522
> URL: http://issues.apache.org/jira/browse/MYFACES-522
> Project: MyFaces
> Type: Bug
> Components: Tomahawk
> Versions: Nightly Build
> Environment: N/A
> Reporter: Enrique Medina Montenegro
> Attachments: _SerializableDataModel_Patch.txt
>
> When setting the preserveDataModel attribute in a dataTable, a new
> _SerializableDataModel is internally build by MyFaces.
> However, if the number of rows to display is less than the total number of
> possible rows, an IllegalArgumentException is thrown. This problem is caused
> by the following bunch of lines in the _SerializableDataModel constructor
> (public _SerializableDataModel(int first, int rows, DataModel dataModel)):
>
> _list = new ArrayList(rows);
> for (int i = 0; i < _rows; i++)
> {
> dataModel.setRowIndex(_first + i);
> if (!dataModel.isRowAvailable()) break;
> _list.add(dataModel.getRowData());
> }
> _rowIndex = -1;
> As can be clearly seen, first the dataModel.setRowIndex is set, independently
> of whether the row is really available or not, as it is checked after.
> The solution would be as simple as swapping the order:
> _list = new ArrayList(rows);
> for (int i = 0; i < _rows; i++)
> {
> if (!dataModel.isRowAvailable()) break;
> dataModel.setRowIndex(_first + i);
> _list.add(dataModel.getRowData());
> }
> _rowIndex = -1;
--
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