Extended DataTable loses data when preserveDataModel=true after validation error
--------------------------------------------------------------------------------
Key: TOMAHAWK-1411
URL: https://issues.apache.org/jira/browse/TOMAHAWK-1411
Project: MyFaces Tomahawk
Issue Type: Bug
Components: Extended Datatable
Affects Versions: 1.1.8
Environment: Tomcat 6, JSF RI 1.2_12
Reporter: Chris Watts
If a page containing a data table with preserved data model has a validation
error on submit, the preserved data is lost and no rows are rendered. (e.g. if
a required field is empty)
Simple replication:
<h:inputText id="Name" value="#{bean.name}" required="true" />
<t:dataTable
value="#{bean.dataModel}"
preserveDataModel="true"
var="obj">
......
bean:
public class Bean
{
private DataModel dataModel;
private String name = null;
public String edit()
{
dataModel = new ListDataModel(values);
return "edit";
}
......
The page is view by an action calling edit() then the page above is submitted
with name being blank causing a validation error.
I have done some probing but am confused by the way the data is preserved so
can't hack a solution...
In the SUN RI UIData the following is called:
public void encodeBegin(FacesContext context) throws IOException {
setDataModel(null); // re-evaluate even with server-side state saving
if (!keepSaved(context)) {
//noinspection CollectionWithoutInitialCapacity
saved = new HashMap<String, SavedState>();
}
super.encodeBegin(context);
}
And the saved model is reset by an earlier call to AbstractHtmlDataTable
protected DataModel getDataModel()
{
if (_preservedDataModel != null)
{
setDataModel(_preservedDataModel);
_preservedDataModel = null;
}
return super.getDataModel();
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.