[
https://issues.apache.org/jira/browse/TOMAHAWK-1411?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Leonardo Uribe reopened TOMAHAWK-1411:
--------------------------------------
> 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
> Assignee: Leonardo Uribe
> Attachments: HtmlDataTableHack.java
>
>
> 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.