隨筆 - 119  文章 - 3173  trackbacks - 0
          <2010年12月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          交友莫獨(dú)酒,茅臺西鳳游。
          口干古井貢,心徜洋河流。
          稱多情杜康,趟無量雙溝。
          贊中華巍巍,無此不銷愁。

          常用鏈接

          留言簿(68)

          隨筆分類(136)

          隨筆檔案(122)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 524914
          • 排名 - 93

          最新評論

          用struts2的標(biāo)簽checkboxlist可以很方便的用生成checkbox組,但是讓其默認(rèn)選中指定checkbox卻是非常麻煩. 

          之前有2種方案: 
          第一種是修改struts2 tag的源代碼. 
          比如http://jolestar.javaeye.com/blog/160360 
          第二種就是徹底妥協(xié),在action里面把list bean轉(zhuǎn)成數(shù)組,賦給checkboxlist的value屬性. 

          這兩種solution都不是那么優(yōu)雅,作為一個(gè)有房貸沒希望的IT民工我不禁問自己: 
          怎么能對自己的要求這么低呢? 怎么能應(yīng)付了事呢? 

          翻文檔,研究了下ognl的語法,終于讓我找到了一種方便的寫法. 


          JavaBean 
          1. public class Operate extends BaseBean {  
          2.     private long id;  
          3.     private String name;  
          4. }  


          Action中初始化allOpList和myOpList. 
          1. private List<Operate> myOpList;  
          2. private List<Operate> allOpList;  


          前臺jsp用strtus2標(biāo)簽生成checkboxlist 
          1. <s:checkboxlist name="myOpList.id" list="allOpList" listValue="name"  listKey="id"   
          2. value="myOpList.{#this.id}"/>  



          checkboxlist標(biāo)簽用allOpList的內(nèi)容生成checkbox, 并且用myOpList的值選中默認(rèn). 
          并且當(dāng)頁面提交的時(shí)候,又能自動把checkbox的選中情況,賦給myOpList.Operate.id屬性. 

          這樣從后到前到再到后,全都是用list bean去完成,用法統(tǒng)一,不要轉(zhuǎn)換,全部操作的是bean而不是數(shù)組. 


          精華在于myOpList.{#this.id}這個(gè)ognl表達(dá)式,自動生成[4, 11]這種格式的數(shù)組. 


          引申一下,ognl的語法強(qiáng)大到可以myOpList.{?#this.enable > 0}來做過濾,看著有點(diǎn)Jquery的味道,非常好用. 

          有同志會說,這種過濾沒有什么意義,不如在后臺sql里面做. 
          假設(shè)一個(gè)應(yīng)用場景: 
          全部用戶信息是放在cache里面的list,根據(jù)前一個(gè)頁面來過濾男女,然后顯示. 
          這時(shí)候這個(gè)過濾表達(dá)式就發(fā)揮作用了,不用您在后臺一個(gè)一個(gè)過濾重新組裝list了. 
          userInfoist.{?#this.sex > 0} 


          簡潔而優(yōu)雅,這下能過自己這關(guān)了. 


          posted on 2010-12-02 14:09 交口稱贊 閱讀(4009) 評論(5)  編輯  收藏 所屬分類: struts

          FeedBack:
          # re: 原創(chuàng)小技巧解決list做strtus2標(biāo)簽checkboxlist默認(rèn)值無法選中的問 2010-12-02 14:50 何楊
          久違,兩年不見了。  回復(fù)  更多評論
            
          # re: 原創(chuàng)小技巧解決list做strtus2標(biāo)簽checkboxlist默認(rèn)值無法選中的問 2010-12-02 16:17 交口稱贊
          ......................
          低調(diào)  回復(fù)  更多評論
            
          # re: 原創(chuàng)小技巧解決list做strtus2標(biāo)簽checkboxlist默認(rèn)值無法選中的問[未登錄] 2010-12-02 17:47 GreatGhoul
          的確是一種比較爽的實(shí)現(xiàn)呀。  回復(fù)  更多評論
            
          # re: 原創(chuàng)小技巧解決list做strtus2標(biāo)簽checkboxlist默認(rèn)值無法選中的問 2010-12-03 09:32 交口稱贊
          必須的,批量初始化批量提交,結(jié)合我整的框架用起來愜意啊.  回復(fù)  更多評論
            
          # Air Retro Jordan 2010-12-03 16:23 Air Retro Jordan
          好好學(xué)習(xí)  回復(fù)  更多評論
            
          主站蜘蛛池模板: 大安市| 邵阳市| 伊宁市| 平邑县| 遂昌县| 颍上县| 建水县| 汝阳县| 左贡县| 清水河县| 汝州市| 大新县| 长寿区| 文昌市| 昭平县| 贡觉县| 城口县| 成都市| 东莞市| 宜州市| 佛冈县| 民县| 东平县| 霍邱县| 手游| 汉阴县| 广丰县| 绩溪县| 阿坝| 深圳市| 孝义市| 富蕴县| 林州市| 陇南市| 亳州市| 江门市| 昌吉市| 澜沧| 龙游县| 新田县| 象州县|