ZK:从java

时间:2015-11-20 04:36:00

标签: zk

我想创建一个选择框来加载一系列值。

我已经编写了代码,但是值没有加载到selectbox中,所以它是空的。我认为,控制器和视图之间的连接是不正确的。你能帮忙吗?提前谢谢。

ZUL页面:

<zk xmlns="">

    <window id="win" apply="hw.SalesController">

     <grid sclass="editHeader">
            <columns visible="false">
                <column width="150px"/>
                <column/>
            </columns>
            <rows>
                <row>
                    <cell>
                        Sales Type
                    </cell>
                    <cell>
<!--SELECTBOX-->
                        <selectbox id="salesTypeListbox" model="${$composer.salesModel}"
                           >
                            <template name="model">
                                <listitem label="${each}" />
                            </template>
                        </selectbox>                        

                    </cell>    
                </row>
            </rows>            
        </grid>   
    </window>
</zk>

SalesController.java:

public class SalesController extends SelectorComposer<window> {

    private ListModelList<String> salesModel = new ListModelList<String>(SalesHeader.getSalesType());

}

SalesHeader.java:

public class SalesHeader {

        public static List<String> getSalesType() {
                return Arrays.asList(new String[]{"BU-0", "BU-1", "BU-2", "BU-3"});
        }
}

1 个答案:

答案 0 :(得分:1)

有两个问题:

第一个错误是

  

在[您的作曲家类]

类型中找不到属性'salesModel'

这是因为你在作曲家中缺少一个getter方法:

public ListModelList<String> getSalesModel() {
   return salesModel;
}

第二个错误与选择框模板中的listitem元素有关。这导致:

  

Listitem的父级必须是Listbox,而不是Selectbox

您只需在模板中使用eachlabel元素就可以解决这个问题:

<template name="model">
    ${each}
</template>

Here你可以找到一个有效的ZKFiddle示例。