嗨,大家好,我是ZK的新手,我收到2个错误,如果这个错误和对一个新手来说非常容易,请指导我。
这是代码。

public void createItem(Listbox list)
{
    BindingListModelList model=(BindingListModelList)list.getModel();
    System.out.println((list==null));//prints false
    System.out.println((model==null));//prints true
    if(model==null){ list.setModel(new ListModelList());System.out.println("After Set New Model: "+(list.getModel()==null));//prints true}
    model=(BindingListModelList)list.getModel();
    System.out.println((model==null));//prints true
    model.add(getMeridaManager().createNewMeridaItem(list));//throws NPE
}

public void loadGrid(Listbox list)
{
    //here i load the model but when is a empty ALL arrayList throws exception on createItem(Listbox list)

    java.util.List<DianaMerida>all = meridaManager.getAllMeridas();
    BindingListModelList rl=new BindingListModelList(all,false);
    list.setModel(rl);
}


如果我使用过去的代码,这里是.zul。

我想知道是否是一个空集合,如何以后再通过示例添加新记录将新项目添加到模型中。

2个问题我在zul中有以下代码。

checkbox id="isclosecheckbox" checked="@{d.c03}"     onCheck="myClass.checkBoxListener2(datebox1);"
datebox id="datebox1" cols="10" format="short" mold="rounded"


但是当单击复选框并调用myClass.checkBoxListener2(datebox1);方法时,出现以下错误。


2013年3月2日下午4:30:41 org.zkoss.zk.ui.impl.UiEngineImpl
handleError:1280严重:>> org.zkoss.zk.ui.UiException:源文件:
内联评估: . . . '' : Undefined argument: datebox1 : at Line: 300 : in file: inline evaluation of:
。 。 。 '':(datebox1)



源文件:. . . '' : Undefined argument: datebox1 : at Line: 300 : in file: inline evaluation of:的内联评估
。 。 。 '':(datebox1)

最佳答案

如果您使用的是MVVM体系结构,则可以在列表框中添加一个新项目,如下所示。

    <?page title="new page title" contentType="text/html;charset=UTF-8"?>
<zk>
    <window title="new page title" border="normal"
        viewModel="@id('vm') @init('com.team.MyListbox')" apply="org.zkoss.bind.BindComposer">
        <button label="AddItem" onClick="@command('addNewItem')"></button>
        <listbox model="@bind(vm.dataList)">
            <listhead>
                <listheader value="A"></listheader>
                <listheader value="B"></listheader>
                <listheader value="C"></listheader>

            </listhead>
            <template name="model" var="mymodel">
                <listitem>
                    <listcell>

                        <textbox value="@bind(mymodel.a)" />
                    </listcell>
                    <listcell>
                        <label value="@bind(mymodel.b)" />

                    </listcell>
                    <listcell>
                        <label value="@bind(mymodel.c)" />

                    </listcell>
                </listitem>
            </template>
        </listbox>
    </window>
</zk>


Java代码或ViewModel是...

package com.team;

import java.util.ArrayList;
import java.util.List;

import org.zkoss.bind.annotation.AfterCompose;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.ContextParam;
import org.zkoss.bind.annotation.ContextType;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zk.ui.Component;

public class MyListbox {

    private List<Data> dataList;

    @AfterCompose
    public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {
        try {
            dataList = new ArrayList<Data>();
            Data data;
            data = new Data("a1", "b1", "c1");
            dataList.add(data);
            data = new Data("a2", "b2", "c2");
            dataList.add(data);
            data = new Data("a3", "b3", "c3");
            dataList.add(data);
        } catch (Exception e) {

        }
    }

    @Command
    @NotifyChange("dataList")
    public void addNewItem(){
        Data data = new Data("", "", "");
        dataList.add(data);
    }
    public List<Data> getDataList() {
        return dataList;
    }

    public void setDataList(List<Data> dataList) {
        this.dataList = dataList;
    }

    public class Data {
        String a;
        String b;
        String c;
        public String getA() {
            return a;
        }
        public String getB() {
            return b;
        }
        public String getC() {
            return c;
        }
        public void setA(String a) {
            this.a = a;
        }
        public void setB(String b) {
            this.b = b;
        }
        public void setC(String c) {
            this.c = c;
        }
        public Data(String a, String b, String c) {
            super();
            this.a = a;
            this.b = b;
            this.c = c;
        }

    }
}


对于复选框问题,您可以在zul中使用类似以下的代码。

<checkbox checked="@bind(vm.checkboxValue)" onCheck="@command('checkboxClicked'  />


在这里我将复选框值与此变量绑定


checkboxValue


任何人都单击复选框,我正在调用方法


复选框


在这里我可以执行我的业务逻辑

关于java - 包含空数据和源文件的ListModel中的ZK NullPointerException:内联评估:``,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14677361/

10-10 15:00