NullPointerException when binding HtmlDataTable to backing bean
---------------------------------------------------------------

         Key: MYFACES-431
         URL: http://issues.apache.org/jira/browse/MYFACES-431
     Project: MyFaces
        Type: Bug
  Components: Tomahawk  
    Versions: 1.0.9 beta    
 Environment: Windows XP, Jboss 3.2.6, Internet Explorer
    Reporter: Paweł Kołoszko
    Priority: Critical


I have page.jsp with datatable and a button:

<x:dataTable id="listarodzajepism" value="#{listRodzajePism.rodzajePism}"
var="rodzajPisma" border="0"
                 styleClass="standardTable"
 headerClass="standardTable_SortHeader"
 rowClasses="standardTable_Row1,standardTable_Row2"
 footerClass="standardTable_Footer"
 sortColumn="#{listRodzajePism.sort}"
 sortAscending="#{listRodzajePism.ascending}"
                 preserveDataModel="true"
               preserveSort="true"
                 rows="24"
 binding="#{listRodzajePism.jsfDataTable}">

... column, column, column ...
</x:dataTable>
 <h:commandButton id="cb" value="NewPage" action="newpage"/>

Action "newpage" of commandbutton opens page2.jsp with only one button:

<h:commandButton id="button"
                 value="Cancel"
 action="back"
 immediate="true"/>

 Action "back" goes back to page.jsp. And here the problem occurs becuase I 
receive an error:

 javax.faces.FacesException: Could not get property rows of component 
 rodzajepismview:listarodzajepism Caused by:
java.lang.NullPointerException
        at
 
org.apache.myfaces.component.html.ext.HtmlDataTable.getRows(HtmlDataTable.java:547)

 When I open page.jsp everything is OK, but action page.jsp -> page2.jsp -> 
page.jsp cause an error.

In my backing bean I have:

         private HtmlDataTable jsfDataTable;

     public HtmlDataTable getJsfDataTable() {
         return jsfDataTable;
     }

     public void setJsfDataTable(HtmlDataTable jsfDataTable) {
         this.jsfDataTable = jsfDataTable;
     }

Backing bean is session scoped. When binding="#{listRodzajePism.jsfDataTable}" 
is removed from x:datatable tag, everyhing works just fine.

I spent some time debugging and here are the results:

Exception is thrown in getRows() method of 
org.apache.myfaces.component.html.ext.HtmlDataTable when command 

return ((_SerializableDataModel)_dataModel).getRows();

is invoked. Cause of exception: _dataModel is null. This line is invoked only 
when _isDataModelRestored = true. I checked that when I open page2.jsp 
_dataModel is created and _isDataModelRestored is set to true. But when I 
return to page1.jsp from page2.jsp, setValueBinding method is invoked and 
_dataModel is set to null. But _isDataModelRestored is still true.


-- 
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

Reply via email to