public List<Rmerchant> getListMerchantbyMasterMerchanttest(){
List<Rmerchant> lstMerchant=em.createNativeQuery("select merchant_name,merchant_email,merchant_status from rmerchant where master_merchant_id=123")
.getResultList();
return lstMerchant;
}
这是simpe查询,因为事先我必须创建更复杂的查询,比如使用count,查询中有很多函数,而我的代码在ZK zul页面中是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="./test"?>
<?init class="com.nsia.doku.escrow.controller.testController"?>
<zk xmlns="http://www.zkoss.org/2005/zul">
<window id="test" xmlns:n="native" title="test" border="normal" position="center" apply="com.nsia.doku.escrow.controller.testController">
<listbox model="@{test$composer.lstMerchant}"
vflex="true">
<auxhead>
<auxheader colspan="3" class="topic">EDS Status</auxheader>
</auxhead>
<listhead>
<listheader label="Merchant Name" align="center"/>
<listheader label="merchant email" align="center" />
<listheader label="merchant status" align="center" />
</listhead>
<listitem self="@{each=lstMerchant}">
<listcell label='@[lstMerchant}' />
<listcell label='@{lstMerchant}' />
<listcell label='@{lstMerchant}' />
</listitem>
</listbox>
</window>
</zk>
如果值与我写的一样,则listcell将如下所示:
merchant name merchant email
[merch001, jhjhjh, null] [merch001, jhjhjh, null]
[fahmi0090908789788, fahmi@gmail.com, null] [fahmi0090908789788, fahmi@gmail.com, null]
如果我在listitem中更改的代码如下:
<listitem self="@{each=lstMerchant}">
<listcell label='@[lstMerchant[0]}' />
<listcell label='@{lstMerchant[1]}' />
<listcell label='@{lstMerchant[2]}' />
</listitem>
or
<listitem self="@{each=lstMerchant}">
<listcell label='@[lstMerchant["0"]}' />
<listcell label='@{lstMerchant["1"]}' />
<listcell label='@{lstMerchant["2"]}' />
</listitem>
or
<listitem self="@{each=lstMerchant}">
<listcell label='@[lstMerchant["merchant_name"]}' />
<listcell label='@{lstMerchant["merchant_email"]}' />
<listcell label='@{lstMerchant["merchant_status"]}' />
</listitem>
or
every lstMerchant i change with each
不起作用,也就是列表项目show to row但是值为null,我很困惑这个问题,也许有人可以帮助我?
我曾经使用icefaces创建网页,如果在icefaces中,我只需将此标记放在单元格中:
currentRow[0]
但在Zk,我还没找到它..
对不起我的英语不好和这个新手问题..谢谢..:D
答案 0 :(得分:0)
这是将UI组件与集合相关联时的典型方案。您可以参考here了解更多详细信息,但基本思路是使用点访问实体属性。数据绑定表达式中的运算符(注意:您必须在实体类中为这些属性定义getter方法)。因此,在您的情况下,您的listitem声明应该看起来像这样
<listitem self="@{each=merchant}">
<listcell label='@{merchant.name}' />
<listcell label='@{merchant.email}' />
<listcell label='@{merchant.address}' />
</listitem>
希望这有帮助。
答案 1 :(得分:-1)
好吧,我保证,我只需要实现ListitemRenderer,并将这样的代码添加到方法渲染中:
public void render(Listitem li, Object data) throws Exception {
Object[] obj=(Object[]) data;
new Listcell((String) obj[16]).setParent(li);
new Listcell((String) obj[17]).setParent(li);
new Listcell((String) obj[22]).setParent(li);
new Listcell((String) obj[0]).setParent(li);
new Listcell((String) obj[1]).setParent(li);
new Listcell((String) obj[2]).setParent(li);
new Listcell((String) obj[3]).setParent(li);
new Listcell((String) obj[18]).setParent(li);
new Listcell((String) obj[19]).setParent(li);
new Listcell((String) obj[20]).setParent(li);
new Listcell((String) obj[21]).setParent(li);
new Listcell((String) obj[4]).setParent(li);
new Listcell((String) obj[5]).setParent(li);
new Listcell((String) obj[6]).setParent(li);
new Listcell((String) obj[7]).setParent(li);
new Listcell((String) obj[8]).setParent(li);
new Listcell((String) obj[10]).setParent(li);
new Listcell((String) obj[15]).setParent(li);
new Listcell((String) obj[12]).setParent(li);
new Listcell((String) obj[13]).setParent(li);
new Listcell((String) obj[14]).setParent(li);
new Listcell((String) obj[23]).setParent(li);
new Listcell((String) obj[24]).setParent(li);
new Listcell((String) obj[25]).setParent(li);
}
索引基于您的nativequery中的列。
在.zul页面中你只需要这样做:
<listbox model="@{dokureport$composer.lstTrans}"
vflex="true" itemRenderer="@{dokureport$composer.itemRenderer}">
itemRenderer
标记添加默认值itemRenderer
,model
是基于您的控制器的列表..感谢您的所有回复,抱歉我的英文不好..谢谢.. < / p>