2016-04-04 7 views
0

Ich versuche, die IndexedContainer von Vaadin in Scala mit dem java.util.List [POJO] zu füllen.Nullpointer, während der IndexedContainer von Vaadin in scala Füllung

Problem? -> NullPointerException werfen.

Wo? -> Der Platz wird im Code-Snippet mit Kommentar angezeigt.

Hinweis -> Die andere Sache ist, verwende ich Iterator, um den Container zu füllen. Ich habe 7 Objekte, die Dinge gehen für 1 Objekt in Ordnung, aber werfen beim Einfügen des 2. Objekts eine Ausnahme.

Ich mache das gleiche mit anderen hierarchischen Containern und sie funktionieren ordnungsgemäß.

Punkt: Die Liste enthält kein Null-Datenelement. Ausgabe ist auch in verschiedenen Schnipsel mit Ausnahme gegeben.

def getOtherAccessContainer(): IndexedContainer = { 
    var container = new IndexedContainer 
    container.addContainerProperty("User", classOf[Any], "-") 
    container.addContainerProperty("user_id", classOf[Any], "-") 
    container.addContainerProperty("User Group", classOf[Any], "-") 
    container.addContainerProperty("user_familyid", classOf[Any], "-") 
    container.addContainerProperty("Object Type", classOf[Any], "-") 
    container.addContainerProperty("Object", classOf[Any], "-") 
    container.addContainerProperty("object_id", classOf[Any], "-") 
    container.addContainerProperty("Object Group", classOf[Any], "-") 
    container.addContainerProperty("object_familyid", classOf[Any], "-") 
    container.addContainerProperty("Permission", classOf[Any], "-") 

    val access_list = accessor.getGrantedObjectList(accessibleuserlist); 
    var iterator = access_list.iterator() 

    var iterator2 = access_list.iterator() 
    println() 
    // Just to show that list of POJO is not having null value. 
    while (iterator2.hasNext()) { 
     val pojo_obj = iterator2.next() 
     println(pojo_obj.username + "---" + pojo_obj.user_id + "---" + pojo_obj.user_familyname + "---" + pojo_obj.user_family_id + "---" + pojo_obj.object_type + "---" + pojo_obj.object_name + 
     "---" + pojo_obj.object_id + "---" + pojo_obj.object_familyname + "---" + pojo_obj.object_family_id + "---" + pojo_obj.permission) 
    } 


    // This loop fills the data in container. 
    while (iterator.hasNext()) { 
     val pojo_obj = iterator.next() 
     var child: Item = container.addItem() 
     if (pojo_obj == null) { 
     println("Trouble is here." + pojo_obj.username) 
     } 
     // Print some properties of POJO to be inserted before the Insertion is occured.  
     println("pojo_obj properties :-) " + pojo_obj.username + "---" + pojo_obj.object_name + "---" + pojo_obj.user_id + "---" + pojo_obj.user_familyname + "---" + pojo_obj.user_family_id) 

     child.getItemProperty("User").asInstanceOf[Property[Any]].setValue(pojo_obj.username) // <- This line Throws the NullPointerException during 2nd Iteration. 
     child.getItemProperty("user_id").asInstanceOf[Property[Any]].setValue(pojo_obj.user_id)// <- If I omitted the line above, It throws NullPointerException for this line and so on. 
     child.getItemProperty("User Group").asInstanceOf[Property[Any]].setValue(pojo_obj.user_familyname) 
     child.getItemProperty("user_familyid").asInstanceOf[Property[Any]].setValue(pojo_obj.user_family_id) 
     child.getItemProperty("Object Type").asInstanceOf[Property[Any]].setValue(pojo_obj.object_type) 
     child.getItemProperty("Object").asInstanceOf[Property[Any]].setValue(pojo_obj.object_name) 
     child.getItemProperty("object_id").asInstanceOf[Property[Any]].setValue(pojo_obj.object_id) 
     child.getItemProperty("Object Group").asInstanceOf[Property[Any]].setValue(pojo_obj.object_familyname) 
     child.getItemProperty("object_familyid").asInstanceOf[Property[Any]].setValue(pojo_obj.object_family_id) 
     child.getItemProperty("Permission").asInstanceOf[Property[Any]].setValue(pojo_obj.permission.toString()) 

    } 
    container 
    } 

Unten ist der Ausgang:

parth---4cc19690-e819-11e5-a3a1-c1cf090b354c---Analytics Team---ff81457a-e9cf-11e5-9ce9-5e5517507c66---sa_table---App_Welcome---bce4bd70-ec34-11e5-bbd6-91bbc2299c26---system---9aa06252-e9c6-11e5-9ce9-5e5517507c66---1 
ravi---d1515310-e9ad-11e5-b18e-c1cf090b354c---Analytics Team---ff81457a-e9cf-11e5-9ce9-5e5517507c66---sa_table---App_Welcome---bce4bd70-ec34-11e5-bbd6-91bbc2299c26---system---9aa06252-e9c6-11e5-9ce9-5e5517507c66---1 
uttam---dca16200-e462-11e5-90ec-c1cf090b354c---Analytics Team---ff81457a-e9cf-11e5-9ce9-5e5517507c66---sa_table---App_Welcome---bce4bd70-ec34-11e5-bbd6-91bbc2299c26---system---9aa06252-e9c6-11e5-9ce9-5e5517507c66---1 
parth---4cc19690-e819-11e5-a3a1-c1cf090b354c---parth---4cc19690-e819-11e5-a3a1-c1cf090b354c---sa_table--- cluster_test---19713360-ed94-11e5-bf9e-c1cf090b354c---cluster_test---19713360-ed94-11e5-bf9e-c1cf090b354c---0 
parth---4cc19690-e819-11e5-a3a1-c1cf090b354c---Analytics Team---ff81457a-e9cf-11e5-9ce9-5e5517507c66---sa_table---App_Welcome---bce4bd70-ec34-11e5-bbd6-91bbc2299c26---system---9aa06252-e9c6-11e5-9ce9-5e5517507c66---1 
uttam---dca16200-e462-11e5-90ec-c1cf090b354c---Analytics Team---ff81457a-e9cf-11e5-9ce9-5e5517507c66---sa_table---App_Welcome---bce4bd70-ec34-11e5-bbd6-91bbc2299c26---system---9aa06252-e9c6-11e5-9ce9-5e5517507c66---1 
ravi---d1515310-e9ad-11e5-b18e-c1cf090b354c---Analytics Team---ff81457a-e9cf-11e5-9ce9-5e5517507c66---sa_table---App_Welcome---bce4bd70-ec34-11e5-bbd6-91bbc2299c26---system---9aa06252-e9c6-11e5-9ce9-5e5517507c66---1 
pojo_obj properties :-) parth---App_Welcome---4cc19690-e819-11e5-a3a1-c1cf090b354c---Analytics Team---ff81457a-e9cf-11e5-9ce9-5e5517507c66 
pojo_obj properties :-) ravi---App_Welcome---d1515310-e9ad-11e5-b18e-c1cf090b354c---Analytics Team---ff81457a-e9cf-11e5-9ce9-5e5517507c66 

16/04/04 11:50:42 ERROR DefaultErrorHandler: 
java.lang.NullPointerException 
    at com.system.tableManager.TreeStructContainer.getOtherAccessContainer(TreeStructContainer.scala:245) 
    at com.analytics.UI.views.ObjectLevelAccess$1.valueChange(ObjectLevelAccess.java:135) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:508) 
    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:198) 
    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:161) 
    at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1008) 
    at com.vaadin.ui.AbstractField.fireValueChange(AbstractField.java:1159) 
    at com.vaadin.ui.AbstractField.setValue(AbstractField.java:570) 
    at com.vaadin.ui.AbstractSelect.setValue(AbstractSelect.java:729) 
    at com.vaadin.ui.AbstractField.setValue(AbstractField.java:468) 
    at com.vaadin.ui.ComboBox.changeVariables(ComboBox.java:730) 
    at com.vaadin.server.communication.ServerRpcHandler.changeVariables(ServerRpcHandler.java:603) 
    at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:422) 
    at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:273) 
    at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:79) 
    at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41) 
    at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1409) 
    at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:364) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 

Antwort

1

Einige Male Vaadin Behälter addItem return null anstelle von neuen Item ID.

Also, bessere Option zu verwenden container.getItem(container.addItem) statt container.addItem().

Oder fügen Sie Ihre eigene benutzerdefinierte Artikel-ID wie container.addItem(customId) für eatch Artikel, die Sie in Container hinzufügen möchten.

+0

Dies macht keinen Sinn, weil 'addItem()' das gleiche wie 'getItem()' zurückgibt. Obwohl ich es mit beiden Suggestions versuchen kann. Ich denke über diesen Vorschlag nach, weil ich zuvor bei allen hierarchischen Containern explizit die ItemId in 'addItem()' hinzugefügt habe. –

+0

Ich bin überrascht, dass es funktioniert .. !! Ich denke in meinem Fall gibt 'addItem()' null zurück. Aber ich kann nicht herausfinden ** "warum ..?" ** –

Verwandte Themen