-
Bug
-
Resolution: Fixed
-
Normal
-
6.5.1
-
None
-
None
(only when listbox + CE) EE doesn't have this issue
the code is simulating mvvm behavior
<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>
>>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)
- blocks
-
ZK-1528 When binding a Java List as a listbox's model in paging mold, add and delete will throw exceptions
- Closed