2011-06-22 46 views
1

IAM變得非常frustating問題時,我必須展示從createNativeQuery在Hibernate中的結果的價值,我的代碼是這樣的:如何在listbox中顯示value的值來自createNativeQuery ZK上的結果?

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查詢,因​​爲事先我必須創建這樣更復雜的查詢使用計數,並在查詢許多功能,我在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, [email protected], null] [fahmi0090908789788, [email protected], null] 

如果我在列表項改變這樣的代碼:

<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 

不工作,又名列表項秀行,但值爲空,, IAM如此混淆這個問題,也許有人能幫助我嗎?

我曾經使用ICEfaces的創建網絡,如果在ICEfaces的,我只是把這個標記細胞:

currentRow[0]但在ZK,我還沒有發現它..我不好

對不起英語和這個新手問題..謝謝..:D

回答

-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標籤加載默認值itemRenderermodel我s的列表根據您的控制器..感謝您的所有答覆和對我的英語不好..對不起..謝謝。

0

這是一個典型的情況下,將UI組件與集合關聯。你可以參考here瞭解更多細節,但基本的想法是使用點訪問實體屬性。在你的數據綁定表達式中(注意:你必須爲你的實體類中的這些屬性定義getter方法)。所以在你的情況你的listitem聲明應該看起來像這樣

<listitem self="@{each=merchant}"> 
       <listcell label='@{merchant.name}' /> 
       <listcell label='@{merchant.email}' /> 
       <listcell label='@{merchant.address}' /> 
      </listitem> 

希望這會有所幫助。

+0

非常感謝您的迴應,有沒有辦法只是訪問集合內的數據沒有這個getter setter?我知道如果數據是綁定不是問題,但如果查詢如此: 「select count(*)as total from merchant;」 如果在icefaces中,我只需要將從nativeQuery中選擇的列表綁定到表中,並且只需使用 「currentRow [0]」調用,如果使用hql,則不是問題,因爲我可以將對象映射到查詢結果..我認爲這是如此令人困惑,難道我無法做到這一點? – fahmi

+0

@fahmi不計數(*)返回單個記錄的聚合函數嗎?在這種情況下,它與原來的問題完全不同,因爲它不適用於ZK的'每個'變量方法迭代指定爲模型的集合。你應該開始提出一個新的問題,並提供更多的細節。 – kachhalimbu

+0

感謝您的回覆,iam對不起,也許我的問題不是很清楚,但我已經完成這個問題,我會發布它,所以也許有人對我有同樣的問題..感謝:D – fahmi

相關問題