ZK - Open Source Ajax Java FrameworkZK - Open Source Ajax Java Framework

Problem with new databind in zk 6 using listbox

mgvv
23 Jan 2012 14:00:20 GMT
23 Jan 2012 14:00:20 GMTHi, I'm using new databind in zk6. In my project i create listbox using Executions.createcomponents and obtain the following error:
<listbox model="@load(vm.items)" selectedItem="@bind(vm.selectedItem)">
<listhead>
<listheader label="idCaracteristicas"/><listheader label="descricao"/></listhead>
<template name="model" var="item"><listitem value="@load(item)"><listcell><a label="@load(item.idCaracteristicas) @converter('vipconnect.framework.zk.databind.IntegerConverter')" onClick="@command('clickA',item=self.getParent().getParent())"/></listcell><listcell label="@load(item.descricao) "/></listitem></template></listbox>
java.lang.ArrayIndexOutOfBoundsException: 1
	at org.zkoss.zel.BeanELResolver.invoke(BeanELResolver.java:394)
	at org.zkoss.zel.CompositeELResolver.invoke(CompositeELResolver.java:161)
	at org.zkoss.zel.CompositeELResolver.invoke(CompositeELResolver.java:161)
	at org.zkoss.xel.zel.XelELResolver.invoke(XelELResolver.java:147)
	at org.zkoss.zel.impl.parser.AstValue.getValue(AstValue.java:168)
	at org.zkoss.zel.impl.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
	at org.zkoss.xel.zel.ELXelExpression.evaluate(ELXelExpression.java:40)
	at org.zkoss.bind.impl.BindEvaluatorXImpl.getValue(BindEvaluatorXImpl.java:44)
	at org.zkoss.bind.impl.BinderImpl.getConverter(BinderImpl.java:369)
	at org.zkoss.bind.impl.PropertyBindingImpl.getConverter(PropertyBindingImpl.java:89)
	at org.zkoss.bind.impl.LoadPropertyBindingImpl.load(LoadPropertyBindingImpl.java:58)
	at org.zkoss.bind.impl.PropertyBindingHandler.doLoadBinding(PropertyBindingHandler.java:172)
	at org.zkoss.bind.impl.PropertyBindingHandler.doLoad(PropertyBindingHandler.java:383)
	at org.zkoss.bind.impl.BinderImpl.loadComponentProperties(BinderImpl.java:1660)
	at org.zkoss.bind.impl.BinderImpl.loadComponent(BinderImpl.java:1642)
	at org.zkoss.bind.impl.BinderImpl.loadComponent(BinderImpl.java:1644)
	at org.zkoss.bind.impl.BinderImpl.loadComponent(BinderImpl.java:1644)
	at vipconnect.framework.zk.ui.DataListbox.afterCompose(DataListbox.java:370)
	at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:816)
	at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:764)
	at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:673)
	at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:637)
	at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:810)
	at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:764)
	at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:673)
	at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:735)
	at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:695)
	at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:637)
	at org.zkoss.zk.ui.impl.UiEngineImpl.createComponents(UiEngineImpl.java:1018)
	at org.zkoss.zk.ui.impl.AbstractExecution.createComponents0(AbstractExecution.java:249)
	at org.zkoss.zk.ui.impl.AbstractExecution.createComponents(AbstractExecution.java:241)
	at org.zkoss.zk.ui.Executions.createComponents(Executions.java:179)
	at vipconnect.framework.zk.ui.Tabbox.addTabPanel(Tabbox.java:87)
	at vipconnect.framework.zk.controller.HomeAbstractWindow.updatePage(HomeAbstractWindow.java:450)
Please help, Thanks in advance, Miguel Goncalves
mgvv
24 Jan 2012 17:42:23 GMT
24 Jan 2012 17:42:23 GMT

Hi,

I found solution to this problem.

Thanks,

Miguel Goncalves

terrytornadoTop Contributor
25 Jan 2012 07:04:40 GMT
25 Jan 2012 07:04:40 GMT

Please share your solution with us.

mgvv
25 Jan 2012 11:23:46 GMT
25 Jan 2012 11:23:46 GMT

Hi,

Zk try to find a method like getConverter or method with varArgs in class associated with vm.
My solution was create method getConverter:

    public Converter getConverter(final String name)
            throws InstantiationException, IllegalAccessException,
            ClassNotFoundException {
        System.out.println("BaseService.getConverter() " + name);

        return (Converter) Class.forName(name).newInstance();
    }