java.lang.NullPointerException

There are no available Samebug tips for this exception. Do you have an idea how to solve this issue? A short tip would help users who saw this issue last week.

  • (only when listbox + CE) EE doesn't have this issue the code is simulating mvvm behavior {code} <zk> <label multiline="true"> (only when listbox + CE) EE doesn't have this issue the code is simulating mvvm behavior 1.chick addToSelection you should see a item A add to next page without an exception 2.this exception cause by a wrong implementation of object's hashcode() 3.should consider to avoid this exception (eat at org.zkoss.zul.Listbox.setSelectedIndex(Listbox.java:929)(need to check side effect) or throw meaningful exception(better) </label> <div width="400px" > <listbox id="listbox" mold="paging" pageSize="10"> <listhead> <listheader label="name" /> </listhead> <template name="model" > <listitem> <listcell label="${each.name}" /> </listitem> </template> </listbox> <button label="addToSelection" onClick="addToSelection()"/> </div> <zscript><![CDATA[ class Item { String name; public Item() { } public Item(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Item)) return false; Item other = (Item) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } } List itemList = new LinkedList(); for (int i = 0; i < 10; i++) { itemList.add(new Item("item " + i)); } ListModelList listModelList = new ListModelList(itemList,true);//if use live list listbox.setModel(listModelList); //1.an item is not in collection yet, however, it already in the selection Item n = new Item(); listModelList.addSelection(n);//un non in list selection public void addToSelection() { //2.after the value changed of the item //the wrong imple of item hash cause this exception n.setName("A"); itemList.add(n); listModelList.addSelection(n); listbox.setModel(listModelList); } ]]> </zscript> </zk> {code} >>java.lang.NullPointerException >> at org.zkoss.zul.Listbox.setSelectedIndex(Listbox.java:929) >> at org.zkoss.zul.Listbox.onListDataChange(Listbox.java:2531) >> at org.zkoss.zul.Listbox.access$17(Listbox.java:2521) >> at org.zkoss.zul.Listbox$4.onChange(Listbox.java:461) >> at org.zkoss.zul.AbstractListModel.fireEvent(AbstractListModel.java:61) >> at org.zkoss.zul.ListModelList.fireSelectionEvent(ListModelList.java:438) >> at org.zkoss.zul.AbstractListModel.addToSelection(AbstractListModel.java:130) >> at org.zkoss.zul.ListModelList.addSelection(ListModelList.java:445) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:597) >> at bsh.Reflect.invokeMethod(Unknown Source) >> at bsh.Reflect.invokeObjectMethod(Unknown Source) >> at bsh.Name.invokeMethod(Unknown Source) >> at bsh.BSHMethodInvocation.eval(Unknown Source) >> at bsh.BSHPrimaryExpression.eval(Unknown Source) >> at bsh.BSHPrimaryExpression.eval(Unknown Source) >> at bsh.BSHBlock.evalBlock(Unknown Source) >> at bsh.BSHBlock.eval(Unknown Source) >> at bsh.BshMethod.invokeImpl(Unknown Source) >> at bsh.BshMethod.invoke(Unknown Source) >> at bsh.BshMethod.invoke(Unknown Source) >> at bsh.Name.invokeLocalMethod(Unknown Source) >> at bsh.Name.invokeMethod(Unknown Source) >> at bsh.BSHMethodInvocation.eval(Unknown Source) >> at bsh.BSHPrimaryExpression.eval(Unknown Source) >> at bsh.BSHPrimaryExpression.eval(Unknown Source) >> at bsh.Interpreter.eval(Unknown Source) >> at bsh.Interpreter.eval(Unknown Source) >> at org.zkoss.zk.scripting.bsh.BSHInterpreter.exec(BSHInterpreter.java:131) >> at org.zkoss.zk.scripting.util.GenericInterpreter.interpret(GenericInterpreter.java:328) >> at org.zkoss.zk.ui.impl.PageImpl.interpret(PageImpl.java:875) >> at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2701) >> at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2654) >> at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:136) >> at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1710) >> at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1495) >> at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1205) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:583) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:481) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:489) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) >> at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) >> at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) >> at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) >> at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) >> at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) >> at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) >> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) >> at org.mortbay.jetty.Server.handle(Server.java:326) >> at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) >> at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945) >> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) >> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) >> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) >> at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) >> at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
    via by dennis,
  • (only when listbox + CE) EE doesn't have this issue the code is simulating mvvm behavior {code} <zk> <label multiline="true"> (only when listbox + CE) EE doesn't have this issue the code is simulating mvvm behavior 1.chick addToSelection you should see a item A add to next page without an exception 2.this exception cause by a wrong implementation of object's hashcode() 3.should consider to avoid this exception (eat at org.zkoss.zul.Listbox.setSelectedIndex(Listbox.java:929)(need to check side effect) or throw meaningful exception(better) </label> <div width="400px" > <listbox id="listbox" mold="paging" pageSize="10"> <listhead> <listheader label="name" /> </listhead> <template name="model" > <listitem> <listcell label="${each.name}" /> </listitem> </template> </listbox> <button label="addToSelection" onClick="addToSelection()"/> </div> <zscript><![CDATA[ class Item { String name; public Item() { } public Item(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Item)) return false; Item other = (Item) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } } List itemList = new LinkedList(); for (int i = 0; i < 10; i++) { itemList.add(new Item("item " + i)); } ListModelList listModelList = new ListModelList(itemList,true);//if use live list listbox.setModel(listModelList); //1.an item is not in collection yet, however, it already in the selection Item n = new Item(); listModelList.addSelection(n);//un non in list selection public void addToSelection() { //2.after the value changed of the item //the wrong imple of item hash cause this exception n.setName("A"); itemList.add(n); listModelList.addSelection(n); listbox.setModel(listModelList); } ]]> </zscript> </zk> {code} >>java.lang.NullPointerException >> at org.zkoss.zul.Listbox.setSelectedIndex(Listbox.java:929) >> at org.zkoss.zul.Listbox.onListDataChange(Listbox.java:2531) >> at org.zkoss.zul.Listbox.access$17(Listbox.java:2521) >> at org.zkoss.zul.Listbox$4.onChange(Listbox.java:461) >> at org.zkoss.zul.AbstractListModel.fireEvent(AbstractListModel.java:61) >> at org.zkoss.zul.ListModelList.fireSelectionEvent(ListModelList.java:438) >> at org.zkoss.zul.AbstractListModel.addToSelection(AbstractListModel.java:130) >> at org.zkoss.zul.ListModelList.addSelection(ListModelList.java:445) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:597) >> at bsh.Reflect.invokeMethod(Unknown Source) >> at bsh.Reflect.invokeObjectMethod(Unknown Source) >> at bsh.Name.invokeMethod(Unknown Source) >> at bsh.BSHMethodInvocation.eval(Unknown Source) >> at bsh.BSHPrimaryExpression.eval(Unknown Source) >> at bsh.BSHPrimaryExpression.eval(Unknown Source) >> at bsh.BSHBlock.evalBlock(Unknown Source) >> at bsh.BSHBlock.eval(Unknown Source) >> at bsh.BshMethod.invokeImpl(Unknown Source) >> at bsh.BshMethod.invoke(Unknown Source) >> at bsh.BshMethod.invoke(Unknown Source) >> at bsh.Name.invokeLocalMethod(Unknown Source) >> at bsh.Name.invokeMethod(Unknown Source) >> at bsh.BSHMethodInvocation.eval(Unknown Source) >> at bsh.BSHPrimaryExpression.eval(Unknown Source) >> at bsh.BSHPrimaryExpression.eval(Unknown Source) >> at bsh.Interpreter.eval(Unknown Source) >> at bsh.Interpreter.eval(Unknown Source) >> at org.zkoss.zk.scripting.bsh.BSHInterpreter.exec(BSHInterpreter.java:131) >> at org.zkoss.zk.scripting.util.GenericInterpreter.interpret(GenericInterpreter.java:328) >> at org.zkoss.zk.ui.impl.PageImpl.interpret(PageImpl.java:875) >> at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2701) >> at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2654) >> at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:136) >> at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1710) >> at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1495) >> at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1205) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:583) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:481) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:489) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) >> at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) >> at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) >> at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) >> at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) >> at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) >> at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) >> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) >> at org.mortbay.jetty.Server.handle(Server.java:326) >> at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) >> at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945) >> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) >> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) >> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) >> at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) >> at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
    via by dennis,
  • h2. Reproducing Steps: There are two different exceptions thrown in the same zul and ViewModel (in the attachment). h3. prepare to reproduce: # download the attachment # correct package name and import statement to no compilation error # check zul's ViewModel name and run it h3. 1. Add Issue # enter some value in the textbox # click "Add" button # Null pointer exception is thrown as follows: {code} 嚴重的: >>java.lang.NullPointerException >> at org.zkoss.zul.Listbox.setSelectedIndex(Listbox.java:929) >> at org.zkoss.zul.Listbox.onListDataChange(Listbox.java:2531) >> at org.zkoss.zul.Listbox.access$800(Listbox.java:261) >> at org.zkoss.zul.Listbox$4.onChange(Listbox.java:461) >> at org.zkoss.zul.AbstractListModel.fireEvent(AbstractListModel.java:61) >> at org.zkoss.zul.ListModelList.fireSelectionEvent(ListModelList.java:438) >> at org.zkoss.zul.AbstractListModel.addToSelection(AbstractListModel.java:130) >> at org.zkoss.bind.converter.sys.ListboxSelectedItemConverter.coerceToUi(ListboxSelectedItemConverter.java:48) >> at org.zkoss.bind.impl.LoadPropertyBindingImpl.load(LoadPropertyBindingImpl.java:74) >> at org.zkoss.bind.impl.BinderImpl.loadOnPropertyChange(BinderImpl.java:360) >> at org.zkoss.bind.impl.BinderImpl.access$100(BinderImpl.java:98) >> at org.zkoss.bind.impl.BinderImpl$QueueListener.onEvent(BinderImpl.java:278) >> at org.zkoss.zk.ui.event.impl.DesktopEventQueue$QueueListener.onEvent(DesktopEventQueue.java:145) >> at org.zkoss.zk.ui.AbstractComponent.onEvent(AbstractComponent.java:2739) >> at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2710) >> at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2651) >> at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:136) >> at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1710) >> at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1495) >> at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1205) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:583) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:481) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:489) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) >> at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) >> at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) >> at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) >> at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) >> at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) >> at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) >> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) >> at org.mortbay.jetty.Server.handle(Server.java:326) >> at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) >> at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945) >> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) >> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) >> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) >> at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) >> at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) {code} h4.Initial Observation # This issue only happens under "paging" mold instead of "default" mold # add a statenent {{pickedItem = new Item();}} after adding to list will eliminate the exception. # move "itemList" in front of "pickedItem" in {{@NotifyChange}} can eliminate NullPointerException h4.Incomplete Reproducing Case This a incomplete page that I tried to reproduce the issue under MVC but no succeeded. {code:xml} <zk> <div width="400px" > <listbox id="listbox" mold="paging" pageSize="10"> <listhead> <listheader label="name" /> </listhead> <template name="model" > <listitem> <listcell label="${each}" /> </listitem> </template> </listbox> <button label="Phase1" onClick="phase1()"/> <button label="Phose2" onClick="phase2()"/> </div> <zscript><![CDATA[ List itemList = new LinkedList(); for (int i= 0 ; i < 10 ; i ++){ itemList.add("item "+i); } ListModelList listModelList = new ListModelList(itemList); listbox.setModel(listModelList); String t = "item 10"; public void phase1(){ listModelList.addSelection(t); } public void phase2(){ itemList.add(t); listModelList.addSelection(t); listModelList = new ListModelList(itemList); listModelList.addSelection(t); listbox.setModel(listModelList); } ]]> </zscript> </zk> {code} h3.2. Delete Issue # select last item, click "Delete" # an exception thrown as follows: {code} 嚴重的: >>java.lang.IndexOutOfBoundsException: Index: 9, Size: 9 >> at java.util.LinkedList.entry(LinkedList.java:368) >> at java.util.LinkedList.get(LinkedList.java:313) >> at org.zkoss.zul.ListModelList.getElementAt(ListModelList.java:150) >> at org.zkoss.zul.Listbox.doSelectionChanged(Listbox.java:2580) >> at org.zkoss.zul.Listbox.onListDataChange(Listbox.java:2534) >> at org.zkoss.zul.Listbox.access$800(Listbox.java:261) >> at org.zkoss.zul.Listbox$4.onChange(Listbox.java:461) >> at org.zkoss.zul.AbstractListModel.fireEvent(AbstractListModel.java:61) >> at org.zkoss.zul.ListModelList.fireSelectionEvent(ListModelList.java:438) >> at org.zkoss.zul.AbstractListModel.addToSelection(AbstractListModel.java:130) >> at org.zkoss.bind.converter.sys.ListboxSelectedItemConverter.coerceToUi(ListboxSelectedItemConverter.java:48) >> at org.zkoss.bind.impl.LoadPropertyBindingImpl.load(LoadPropertyBindingImpl.java:74) >> at org.zkoss.bind.impl.BinderImpl.loadOnPropertyChange(BinderImpl.java:360) >> at org.zkoss.bind.impl.BinderImpl.access$100(BinderImpl.java:98) >> at org.zkoss.bind.impl.BinderImpl$QueueListener.onEvent(BinderImpl.java:278) >> at org.zkoss.zk.ui.event.impl.DesktopEventQueue$QueueListener.onEvent(DesktopEventQueue.java:145) >> at org.zkoss.zk.ui.AbstractComponent.onEvent(AbstractComponent.java:2739) >> at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2710) >> at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2651) >> at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:136) >> at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1710) >> at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1495) >> at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1205) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:583) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:481) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:489) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) >> at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) >> at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) >> at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) >> at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) >> at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) >> at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) >> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) >> at org.mortbay.jetty.Server.handle(Server.java:326) >> at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) >> at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945) >> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) >> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) >> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) >> at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) >> at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) {code} h4. Initial Observation: # This issue only happens under both "paging" and "default" mold # add a statement {{pickedItem = null;}} after deletion will eliminate the exception. But use a statement {{pickedItem = new Item()}} still cause the exception. # move "itemList" in front of "pickedItem" in @NotifyChange can eliminate the exception, like {{@NotifyChange({"itemList","pickedItem"})}}
    via by hawk,
  • Listbox with paging. If dynamically in custom renderer call row.detach(), and then on client select last row, ZK throws java.lang.NullPointerException or java.lang.IndexOutOfBoundsException. Please see example: http://zkfiddle.org/sample/1esfv0m/41-Another-new-ZK-fiddle#source-3 1) java.lang.NullPointerException at org.zkoss.zul.Listbox.setSelectedIndex(Listbox.java:929) at org.zkoss.zul.Listbox.selectItem(Listbox.java:953) at org.zkoss.zul.Listbox.service(Listbox.java:3396) at org.zkoss.zk.ui.impl.DesktopImpl.service(DesktopImpl.java:699) at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1193) at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:558) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:456) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:464) at javax.servlet.http.HttpServlet.service(HttpServlet.java:595) at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) .. 2) java.lang.IndexOutOfBoundsException: Index: -1, Size: 3 at java.util.ArrayList.get(ArrayList.java:352) at org.zkoss.zul.ListModelList.getElementAt(ListModelList.java:150) at org.zkoss.zul.Listbox.service(Listbox.java:3423) at org.zkoss.zk.ui.impl.DesktopImpl.service(DesktopImpl.java:708) at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1204) at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:601) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:483) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:492) at javax.servlet.http.HttpServlet.service(HttpServlet.java:595) at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) ...
    via by emorozovs,
  • Listbox with paging. If dynamically in custom renderer call row.detach(), and then on client select last row, ZK throws java.lang.NullPointerException or java.lang.IndexOutOfBoundsException. Please see example: http://zkfiddle.org/sample/1esfv0m/41-Another-new-ZK-fiddle#source-3 1) java.lang.NullPointerException at org.zkoss.zul.Listbox.setSelectedIndex(Listbox.java:929) at org.zkoss.zul.Listbox.selectItem(Listbox.java:953) at org.zkoss.zul.Listbox.service(Listbox.java:3396) at org.zkoss.zk.ui.impl.DesktopImpl.service(DesktopImpl.java:699) at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1193) at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:558) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:456) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:464) at javax.servlet.http.HttpServlet.service(HttpServlet.java:595) at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) .. 2) java.lang.IndexOutOfBoundsException: Index: -1, Size: 3 at java.util.ArrayList.get(ArrayList.java:352) at org.zkoss.zul.ListModelList.getElementAt(ListModelList.java:150) at org.zkoss.zul.Listbox.service(Listbox.java:3423) at org.zkoss.zk.ui.impl.DesktopImpl.service(DesktopImpl.java:708) at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1204) at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:601) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:483) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:492) at javax.servlet.http.HttpServlet.service(HttpServlet.java:595) at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) ...
    via by emorozovs,
  • h2. Reproducing Steps: There are two different exceptions thrown in the same zul and ViewModel (in the attachment). h3. prepare to reproduce: # download the attachment # correct package name and import statement to no compilation error # check zul's ViewModel name and run it h3. 1. Add Issue # enter some value in the textbox # click "Add" button # Null pointer exception is thrown as follows: {code} 嚴重的: >>java.lang.NullPointerException >> at org.zkoss.zul.Listbox.setSelectedIndex(Listbox.java:929) >> at org.zkoss.zul.Listbox.onListDataChange(Listbox.java:2531) >> at org.zkoss.zul.Listbox.access$800(Listbox.java:261) >> at org.zkoss.zul.Listbox$4.onChange(Listbox.java:461) >> at org.zkoss.zul.AbstractListModel.fireEvent(AbstractListModel.java:61) >> at org.zkoss.zul.ListModelList.fireSelectionEvent(ListModelList.java:438) >> at org.zkoss.zul.AbstractListModel.addToSelection(AbstractListModel.java:130) >> at org.zkoss.bind.converter.sys.ListboxSelectedItemConverter.coerceToUi(ListboxSelectedItemConverter.java:48) >> at org.zkoss.bind.impl.LoadPropertyBindingImpl.load(LoadPropertyBindingImpl.java:74) >> at org.zkoss.bind.impl.BinderImpl.loadOnPropertyChange(BinderImpl.java:360) >> at org.zkoss.bind.impl.BinderImpl.access$100(BinderImpl.java:98) >> at org.zkoss.bind.impl.BinderImpl$QueueListener.onEvent(BinderImpl.java:278) >> at org.zkoss.zk.ui.event.impl.DesktopEventQueue$QueueListener.onEvent(DesktopEventQueue.java:145) >> at org.zkoss.zk.ui.AbstractComponent.onEvent(AbstractComponent.java:2739) >> at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2710) >> at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2651) >> at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:136) >> at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1710) >> at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1495) >> at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1205) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:583) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:481) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:489) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) >> at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) >> at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) >> at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) >> at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) >> at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) >> at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) >> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) >> at org.mortbay.jetty.Server.handle(Server.java:326) >> at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) >> at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945) >> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) >> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) >> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) >> at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) >> at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) {code} h4.Initial Observation # This issue only happens under "paging" mold instead of "default" mold # add a statenent {{pickedItem = new Item();}} after adding to list will eliminate the exception. # move "itemList" in front of "pickedItem" in {{@NotifyChange}} can eliminate NullPointerException h4.Incomplete Reproducing Case This a incomplete page that I tried to reproduce the issue under MVC but no succeeded. {code:xml} <zk> <div width="400px" > <listbox id="listbox" mold="paging" pageSize="10"> <listhead> <listheader label="name" /> </listhead> <template name="model" > <listitem> <listcell label="${each}" /> </listitem> </template> </listbox> <button label="Phase1" onClick="phase1()"/> <button label="Phose2" onClick="phase2()"/> </div> <zscript><![CDATA[ List itemList = new LinkedList(); for (int i= 0 ; i < 10 ; i ++){ itemList.add("item "+i); } ListModelList listModelList = new ListModelList(itemList); listbox.setModel(listModelList); String t = "item 10"; public void phase1(){ listModelList.addSelection(t); } public void phase2(){ itemList.add(t); listModelList.addSelection(t); listModelList = new ListModelList(itemList); listModelList.addSelection(t); listbox.setModel(listModelList); } ]]> </zscript> </zk> {code} h3.2. Delete Issue # select last item, click "Delete" # an exception thrown as follows: {code} 嚴重的: >>java.lang.IndexOutOfBoundsException: Index: 9, Size: 9 >> at java.util.LinkedList.entry(LinkedList.java:368) >> at java.util.LinkedList.get(LinkedList.java:313) >> at org.zkoss.zul.ListModelList.getElementAt(ListModelList.java:150) >> at org.zkoss.zul.Listbox.doSelectionChanged(Listbox.java:2580) >> at org.zkoss.zul.Listbox.onListDataChange(Listbox.java:2534) >> at org.zkoss.zul.Listbox.access$800(Listbox.java:261) >> at org.zkoss.zul.Listbox$4.onChange(Listbox.java:461) >> at org.zkoss.zul.AbstractListModel.fireEvent(AbstractListModel.java:61) >> at org.zkoss.zul.ListModelList.fireSelectionEvent(ListModelList.java:438) >> at org.zkoss.zul.AbstractListModel.addToSelection(AbstractListModel.java:130) >> at org.zkoss.bind.converter.sys.ListboxSelectedItemConverter.coerceToUi(ListboxSelectedItemConverter.java:48) >> at org.zkoss.bind.impl.LoadPropertyBindingImpl.load(LoadPropertyBindingImpl.java:74) >> at org.zkoss.bind.impl.BinderImpl.loadOnPropertyChange(BinderImpl.java:360) >> at org.zkoss.bind.impl.BinderImpl.access$100(BinderImpl.java:98) >> at org.zkoss.bind.impl.BinderImpl$QueueListener.onEvent(BinderImpl.java:278) >> at org.zkoss.zk.ui.event.impl.DesktopEventQueue$QueueListener.onEvent(DesktopEventQueue.java:145) >> at org.zkoss.zk.ui.AbstractComponent.onEvent(AbstractComponent.java:2739) >> at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2710) >> at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2651) >> at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:136) >> at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1710) >> at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1495) >> at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1205) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:583) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:481) >> at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:489) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) >> at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) >> at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) >> at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) >> at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) >> at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) >> at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) >> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) >> at org.mortbay.jetty.Server.handle(Server.java:326) >> at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) >> at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945) >> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) >> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) >> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) >> at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) >> at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) {code} h4. Initial Observation: # This issue only happens under both "paging" and "default" mold # add a statement {{pickedItem = null;}} after deletion will eliminate the exception. But use a statement {{pickedItem = new Item()}} still cause the exception. # move "itemList" in front of "pickedItem" in @NotifyChange can eliminate the exception, like {{@NotifyChange({"itemList","pickedItem"})}}
    via by hawk,
    • java.lang.NullPointerException at org.zkoss.zul.Listbox.setSelectedIndex(Listbox.java:929) at org.zkoss.zul.Listbox.onListDataChange(Listbox.java:2531) at org.zkoss.zul.Listbox.access$17(Listbox.java:2521) at org.zkoss.zul.Listbox$4.onChange(Listbox.java:461) at org.zkoss.zul.AbstractListModel.fireEvent(AbstractListModel.java:61) at org.zkoss.zul.ListModelList.fireSelectionEvent(ListModelList.java:438) at org.zkoss.zul.AbstractListModel.addToSelection(AbstractListModel.java:130) at org.zkoss.zul.ListModelList.addSelection(ListModelList.java:445) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at bsh.Reflect.invokeMethod(Unknown Source) at bsh.Reflect.invokeObjectMethod(Unknown Source) at bsh.Name.invokeMethod(Unknown Source) at bsh.BSHMethodInvocation.eval(Unknown Source) at bsh.BSHPrimaryExpression.eval(Unknown Source) at bsh.BSHPrimaryExpression.eval(Unknown Source) at bsh.BSHBlock.evalBlock(Unknown Source) at bsh.BSHBlock.eval(Unknown Source) at bsh.BshMethod.invokeImpl(Unknown Source) at bsh.BshMethod.invoke(Unknown Source) at bsh.BshMethod.invoke(Unknown Source) at bsh.Name.invokeLocalMethod(Unknown Source) at bsh.Name.invokeMethod(Unknown Source) at bsh.BSHMethodInvocation.eval(Unknown Source) at bsh.BSHPrimaryExpression.eval(Unknown Source) at bsh.BSHPrimaryExpression.eval(Unknown Source) at bsh.Interpreter.eval(Unknown Source) at bsh.Interpreter.eval(Unknown Source) at org.zkoss.zk.scripting.bsh.BSHInterpreter.exec(BSHInterpreter.java:131) at org.zkoss.zk.scripting.util.GenericInterpreter.interpret(GenericInterpreter.java:328) at org.zkoss.zk.ui.impl.PageImpl.interpret(PageImpl.java:875) at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2701) at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2654) at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:136) at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1710) at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1495) at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1205) at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:583) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:481) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:489) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
    No Bugmate found.