https://sourceforge.net/forum/forum.php?thread_id=1957208&forum_id=510209
When I try use last example from this small talk: http://www.zkoss.org/smalltalks/comboboxEnhancement/ with ZK 3.0.3
I have exception:
java.lang.IndexOutOfBoundsException: Index: 0
java.util.AbstractSequentialList.get(Unknown Source)
org.zkoss.zul.Combobox.getItemAtIndex(Combobox.java:452)
org.zkoss.zkplus.databind.SelectedComboitemConverter.coerceToUi(SelectedComboitemConverter.java:63)
org.zkoss.zkplus.databind.Binding.myLoadAttribute(Binding.java:250)
org.zkoss.zkplus.databind.Binding.loadAttribute(Binding.java:233)
org.zkoss.zkplus.databind.DataBinder.loadAttrs(DataBinder.java:464)
org.zkoss.zkplus.databind.DataBinder.loadComponent(DataBinder.java:407)
org.zkoss.zkplus.databind.DataBinder.loadAll(DataBinder.java:440)
org.zkoss.zkplus.databind.AnnotateDataBinderInit.doAfterCompose(AnnotateDataBinderInit.java:70)
org.zkoss.zk.ui.impl.RealInits.doAfterCompose(Initiators.java:86)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:336)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:265)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:227)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:167)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
If to comment line "selected = orders.get(0);" then code works fine but 1st element not selected on page load.
Logged In: YES
user_id=1684431
Originator: NO
I cannot duplicate your issue.
Please use the latest ZK Freshly version.
/Jumper
Logged In: YES
user_id=2025531
Originator: YES
Hello.
Could you try to repeat this bug on code from small talk: http://zkoss.org/smalltalks/comboboxEnhancement/?
I've tried on ver. 4.0.4 and I have such exception:
Mar 27, 2008 8:42:14 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet zkLoader threw exception
java.lang.IndexOutOfBoundsException: Index: 0
at java.util.AbstractSequentialList.get(Unknown Source)
at org.zkoss.zul.Combobox.getItemAtIndex(Combobox.java:457)
at org.zkoss.zkplus.databind.SelectedComboitemConverter.coerceToUi(SelectedComboitemConverter.java:63)
at org.zkoss.zkplus.databind.Binding.myLoadAttribute(Binding.java:251)
at org.zkoss.zkplus.databind.Binding.loadAttribute(Binding.java:234)
at org.zkoss.zkplus.databind.DataBinder.loadAttrs(DataBinder.java:467)
at org.zkoss.zkplus.databind.DataBinder.loadComponent(DataBinder.java:410)
at org.zkoss.zkplus.databind.DataBinder.loadAll(DataBinder.java:443)
at org.zkoss.zkplus.databind.AnnotateDataBinderInit.doAfterCompose(AnnotateDataBinderInit.java:70)
at org.zkoss.zk.ui.impl.RealInits.doAfterCompose(Initiators.java:86)
at org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:336)
at org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:265)
at org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:227)
at org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:167)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.sibers.cybertrax.filters.SecurityFilter.doFilter(SecurityFilter.java:45)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Unknown Source)
This code:
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
<window width="500px">
<zscript>
public class Order {
private String _orderName;
private String _orderNumber;
public void setOrderName(String o) {
_orderName = o;
}
public String getOrderName() {
return _orderName;
}
public void setOrderNumber(String n) {
_orderNumber = n;
}
public String getOrderNumber() {
return _orderNumber;
}
}
int count = 30;
List orders = new LinkedList();
for(int j= 0; j < count; ++j) {
Order o = new Order();
o.setOrderName("OrderName - " + j );
o.setOrderNumber("OrderNumber - " + j);
orders.add(o);
}
selected = orders.get(0);
</zscript>
<combobox model="@{orders}" selectedItem="@{selected}" value="@{selected.orderName}">
<comboitem self="@{each=order}" label="@{order.orderName}" value="@{order.orderNumber}"/>
</combobox>
<grid>
<auxhead>
<auxheader align="center" colspan="2">Order Information</auxheader>
</auxhead>
<columns>
<column align="center" width="200px" label="Item"/>
<column align="center" width="200px" label="Value"/>
</columns>
<rows>
<row>OrderNumber: <label value="@{selected.orderNumber}"/></row>
<row>OrderName: <label value="@{selected.orderName}"/></row>
</rows>
</grid>
</window>
Logged In: YES
user_id=1684431
Originator: NO
Did you use new ZK version from this URL? - http://sourceforge.net/project/showfiles.php?group_id=152762&package_id=169309
In fact, I try both versions ZK 3.0.3 and ZK 3.0.4 and they all work well with your example.
BTW, if you can't still work, please tell me more information about your environment.
Thanks,
Jumper
Logged In: YES
user_id=2025531
Originator: YES
Thanks for your feedback! :-)
Yes, I've also tried freshly version zk-3.0.5-FL-2008-04-08.
My environment:
Eclipse 3.3.0
/usr/java/jre1.6.0_02/bin/java -version
java version "1.6.0_02"
Java(TM) SE Runtime Environment (build 1.6.0_02-b05)
Java HotSpot(TM) Client VM (build 1.6.0_02-b05, mixed mode, sharing)
tomcat-5.5.23
ps aux | grep tomcat
chagin 22542 1.2 3.4 233948 54136 pts/3 Sl+ 15:02 0:30 /usr/java/jre1.6.0_02/bin/java -Dcatalina.base=/home/chagin/Development/java/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1 -Dcatalina.home=/home/chagin/Development/java/apache-tomcat-5.5.23 -Dwtp.deploy=/home/chagin/Development/java/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps -Djava.endorsed.dirs=/home/chagin/Development/java/apache-tomcat-5.5.23/common/endorsed -classpath /home/chagin/Development/java/apache-tomcat-5.5.23/bin/bootstrap.jar org.apache.catalina.startup.Bootstrap start
And I have such exception:
java.lang.IndexOutOfBoundsException: Index: 0
java.util.AbstractSequentialList.get(Unknown Source)
org.zkoss.zul.Combobox.getItemAtIndex(Combobox.java:457)
org.zkoss.zkplus.databind.SelectedComboitemConverter.coerceToUi(SelectedComboitemConverter.java:63)
org.zkoss.zkplus.databind.Binding.myLoadAttribute(Binding.java:251)
org.zkoss.zkplus.databind.Binding.loadAttribute(Binding.java:234)
org.zkoss.zkplus.databind.DataBinder.loadAttrs(DataBinder.java:467)
org.zkoss.zkplus.databind.DataBinder.loadComponent(DataBinder.java:410)
org.zkoss.zkplus.databind.DataBinder.loadAll(DataBinder.java:443)
org.zkoss.zkplus.databind.AnnotateDataBinderInit.doAfterCompose(AnnotateDataBinderInit.java:70)
org.zkoss.zk.ui.impl.RealInits.doAfterCompose(Initiators.java:86)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:336)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:265)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:227)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:167)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
When I added my own selected item converter:
<combobox model="@{orders}" selectedItem="@{selected, converter='com.test.TestConverter'}" value="@{selected.orderName}">
<comboitem self="@{each=order}" label="@{order.orderName}" value="@{order.orderNumber}"/>
</combobox>
And converter:
public class TestConverter extends SelectedComboitemConverter {
@Override
public Object coerceToBean(Object val, Component comp) {
System.out.println("coerce to bean");
return super.coerceToBean(val, comp);
}
@Override
public Object coerceToUi(Object val, Component comp) {
System.out.println("val=" + val + ", " + "comp=" + comp);
Combobox box = (Combobox) comp;
System.out.println("model=" + box.getModel());
List<Comboitem> items = box.getItems();
System.out.println("items=" + items);
if ( box.getItems().size() == 0 ) {
return null;
}
return super.coerceToUi(val, comp);
}
}
then I have such out:
val=Order@10bc995, comp=<Combobox z_9j_2c>
model=[Order@1257687, Order@88d319, Order@db38a4, Order@63a1ae, Order@10bc995, Order@df8b14, Order@23d08b, Order@1508f31, Order@1e8fa70, Order@91f0de, Order@15c929a, Order@9cd8db, Order@1612190, Order@1e29b99, Order@5585dc, Order@c736e4, Order@e4e358, Order@109dc35, Order@58213c, Order@1ee04fd, Order@1898115, Order@79b177, Order@1723c7f, Order@e1eae7, Order@523be, Order@16dba0a, Order@d0f59e, Order@ad5fab, Order@63f09e, Order@14a55e5]
items=[]
val=Order@10bc995, comp=<Combobox z_9j_2c>
model=[Order@1257687, Order@88d319, Order@db38a4, Order@63a1ae, Order@10bc995, Order@df8b14, Order@23d08b, Order@1508f31, Order@1e8fa70, Order@91f0de, Order@15c929a, Order@9cd8db, Order@1612190, Order@1e29b99, Order@5585dc, Order@c736e4, Order@e4e358, Order@109dc35, Order@58213c, Order@1ee04fd, Order@1898115, Order@79b177, Order@1723c7f, Order@e1eae7, Order@523be, Order@16dba0a, Order@d0f59e, Order@ad5fab, Order@63f09e, Order@14a55e5]
items=[<Comboitem @z_9j_3c0>, <Comboitem @z_9j_4c1>, <Comboitem @z_9j_5c2>, <Comboitem @z_9j_6c3>, <Comboitem @z_9j_7c4>, <Comboitem @z_9j_8c5>, <Comboitem @z_9j_9c6>, <Comboitem @z_9j_ac7>, <Comboitem @z_9j_bc8>, <Comboitem @z_9j_cc9>, <Comboitem @z_9j_dc10>, <Comboitem @z_9j_ec11>, <Comboitem @z_9j_fc12>, <Comboitem @z_9j_gc13>, <Comboitem @z_9j_hc14>, <Comboitem @z_9j_ic15>, <Comboitem @z_9j_jc16>, <Comboitem @z_9j_kc17>, <Comboitem @z_9j_lc18>, <Comboitem @z_9j_mc19>, <Comboitem @z_9j_nc20>, <Comboitem @z_9j_oc21>, <Comboitem @z_9j_pc22>, <Comboitem @z_9j_qc23>, <Comboitem @z_9j_rc24>, <Comboitem @z_9j_sc25>, <Comboitem @z_9j_tc26>, <Comboitem @z_9j_uc27>, <Comboitem @z_9j_vc28>, <Comboitem @z_9j_0d29>]
coerce to bean
So this converter was called 2 times. And for the first time combobox hasn't items :-)
With this converter combobox works fine.
May be I use invalid environment? :-)
Thanks,
Dmitriy
Logged In: YES
user_id=1684431
Originator: NO
Could you export your project to run on a standalone Tomcat?
And make sure the problem is caused by ZK or Eclipse.
Thanks,
Jumper
Logged In: YES
user_id=2025531
Originator: YES
Could you try to deploy our WAR file? Please download it from this link:
http://rapidshare.de/files/39084454/testApp.war.html
We use ZK from zk-bin-3.0.5-FL-2008-04-08.zip.
Thanks,
Dmitriy
Logged In: YES
user_id=1684431
Originator: NO
Fixed since 4/14.
This bug is only caused by running Tomcat with Java 6.