ZK:从 java 中将值加载到选择框

ZK : Loading values into Selectbox from java

我想创建一个选择框来将一组值加载到其中。

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

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"});
        }
}

有两个问题:

第一个错误是

Property 'salesModel' not found on type [your composer class]

这是因为您的作曲家缺少 getter 方法:

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

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

Listitem's parent must be Listbox, not Selectbox

您可以通过简单地在模板中使用 eachlabel 元素来解决这个问题:

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

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