submit a t:datatable accurred NullPointerException In 
org.apache.myfaces.component.html.ext.HtmlDataTable.updateModelFromPreservedDataModel
-------------------------------------------------------------------------------------------------------------------------------------------

                 Key: TOMAHAWK-1198
                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1198
             Project: MyFaces Tomahawk
          Issue Type: Bug
          Components: Extended Datatable
    Affects Versions: 1.1.6
         Environment: myfaces-api-1.1.5.jar
myfaces-impl-1.1.5.jar
tomahawk-1.1.6.jar
apache-tomcat-6.0.16
            Reporter: Tang Yongkang


It occured a NullPointerException when submitted a "t:datatable".

I set a "t:datatable" as follow:
<t:dataTable id="searchResult" preserveDataModel="true" 
value='#{testBean.formData["employeeList"]}' var="list" border="1">

testBean: BackingBean
formData: an Object of  HashMap type
formData["employeeList"] contains a ArrayList Object which  was the datas 
searched form database.

When submit this form, it occures NullPointerException(From Tomcat).
2008-2-17 15:56:39 org.apache.catalina.core.StandardWrapperValve invoke
Serious: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
        at 
org.apache.myfaces.component.html.ext.HtmlDataTable.updateModelFromPreservedDataModel(HtmlDataTable.java:502)
        at 
org.apache.myfaces.component.html.ext.HtmlDataTable.processUpdates(HtmlDataTable.java:464)
        at 
javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:648)
        at javax.faces.component.UIForm.processUpdates(UIForm.java:90)
        at 
javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:648)
        at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:160)
        at 
org.apache.myfaces.lifecycle.UpdateModelValuesExecutor.execute(UpdateModelValuesExecutor.java:33)
        at 
org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
        at 
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:595)


I track the Tomahawk  source and found  the following source:

501:        List lst = (List) dm.getWrappedData();
502:        if (lst.size() > 0)
503:        {
504:            vb.setValue(context, lst.get(0));
505:        }
506:        else
507:        {
508:            vb.setValue(context, null);
509:        }

I think if the "lst" object is empty(size() == 0), the "context" was set to 
null,
So, when "lst" obeject is null, the "context"  also should be set to null, so I 
changed the source at my local as folloing,
ant it runs.

501:        List lst = (List) dm.getWrappedData();
502:        if (lst != null && lst.size() > 0)
503:        {
504:            vb.setValue(context, lst.get(0));
505:        }
506:        else
507:        {
508:            vb.setValue(context, null);
509:        }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to