努力打造一個(gè)創(chuàng)意的開(kāi)源JSF組件包——Tcoco

          花了幾天時(shí)間又為我的Tcoco組件包增加了兩個(gè)新的組件: HtmlLinkage 、HtmlAjaxMess

          想要努力打造一個(gè)創(chuàng)意的開(kāi)源JSF組件包,如果有人幫忙貢獻(xiàn)一些代碼、組件或者提供一些建議的話,非常感謝!

          HtmlLinkage : 實(shí)現(xiàn)了一個(gè)雙聯(lián)動(dòng)下拉框。

          HtmlAjaxMess : 實(shí)現(xiàn)酷酷的站內(nèi)信功能。

          組件測(cè)試地址:http://www.tbuy.biz/tbuy/test.faces



          以下是組件的使用方法(先簡(jiǎn)單配置好過(guò)濾器及引入taglib標(biāo)簽)

          ----------------------------------------------------------------- HtmlLinkage
          實(shí)現(xiàn)雙聯(lián)動(dòng)的下拉框選單,所有javascript都封裝在組件里面,使用者完全可以不理會(huì)javascript,只要簡(jiǎn)單綁定屬性即可。

          <h:form>
          <coco:linkage param1="#{TestBean.param1}" ------- 選項(xiàng)1,綁定于后臺(tái)bean的String類型
          param2="#{TestBean.param2}" ---------------------- 選項(xiàng)2,同上.
          obj="#{TestBean.obj}"> --------------------------- 所有的選擇類型(Map類型)
          </coco:linkage>
          </h:form>

          屬性說(shuō)明(以下屬性都支持表達(dá)式綁定):

          param1: 這個(gè)屬性主要用于接收所選擇的第一個(gè)值(即第一個(gè)select所選的值),綁定于后臺(tái)bean的String屬性

          param2: 這個(gè)屬性主要用于接收所選擇的第二個(gè)值(即第二個(gè)select所選的值),綁定于后臺(tái)bean的String屬性

          obj: 這個(gè)是所有的可選擇類型,包含了第一維及第二維,綁定于后臺(tái)Bean的Map類型即可,如下:

          簡(jiǎn)單的使用方法
          private Map<String, List<String>> obj;

          public Map<String, List<String>> getObj() {
          if (obj == null) {
          obj = new HashMap<String, List<String>>();

          List<String> aa = new ArrayList<String>();// 第一組選單
          aa.add("aa_1");
          aa.add("aa_2");
          aa.add("aa_3");

          List<String> bb = new ArrayList<String>();// 第二組選單
          bb.add("bb_1");
          bb.add("bb_2");
          bb.add("bb_3");

          List<String> cc = new ArrayList<String>();// 第三組選單
          cc.add("cc_1");
          cc.add("cc_2");
          cc.add("cc_3");

          obj .put("aa", aa);// 將以上幾組選單放入obj中,在組件的encode中會(huì)自動(dòng)分析并處理這些數(shù)據(jù)
          obj .put("bb", bb);
          obj .put("cc", cc);
          }
          return obj;
          }

          obj也可以是以下的Map類型,這樣可以將Select中的option的value與label區(qū)分開(kāi)來(lái).

          public Map<String[], List<String[]>> getObj() {
          if (obj == null) {
          obj= new HashMap<String[], List<String[]>>();

          String[] ee = new String[]{"ee", "EE"}; // 第一組選單
          List<String[]> eeList = new ArrayList<String[]>();
          eeList.add(new String[]{"ee_1", "EE_1"});
          eeList.add(new String[]{"ee_2", "EE_2"});
          eeList.add(new String[]{"ee_3", "EE_3"});

          String[] ff = new String[]{"ff", "FF"}; 第二組選單
          List<String[]> ffList = new ArrayList<String[]>();
          ffList.add(new String[]{"ff_1", "FF_1"});
          ffList.add(new String[]{"ff_2", "FF_2"});
          ffList.add(new String[]{"ff_3", "FF_3"});

          String[] gg = new String[]{"gg", "GG"}; 第三組選單
          List<String[]> ggList = new ArrayList<String[]>();
          ggList.add(new String[]{"gg_1", "GG_1"});
          ggList.add(new String[]{"gg_2", "GG_2"});
          ggList.add(new String[]{"gg_3", "GG_3"});

          obj.put(ee, eeList);
          obj.put(ff, ffList);
          obj.put(gg, ggList);
          }
          return obj;
          }

          ----------------------------------------------------------------- HtmlAjaxMess

          這個(gè)組件的使用更簡(jiǎn)單,只是不太通用而已,使用了Ajax功能,實(shí)現(xiàn)了很酷很生動(dòng)的效果,或者花俏了一點(diǎn),仍然是將代碼完全封裝在了組件中,使用者可以完全不用理會(huì)javascript.“JSF與AJAX是天作之合”這句話一點(diǎn)都不假。

          <h:form>
          <coco:ajaxMess process="#{mess_send.quickSend}" label="站內(nèi)信"/>
          </h:form>

          屬性說(shuō)明(以下屬性都支持表達(dá)式綁定):

          label: 顯示于頁(yè)面中的標(biāo)簽而已,綁定于后臺(tái)bean的String類型.

          process :這個(gè)屬性綁定到了后臺(tái)bean的一個(gè)方法中,該方法需要接受3個(gè)參數(shù),(即:一個(gè)目標(biāo)用戶ID,一個(gè)消息標(biāo)題,一個(gè)消息主體內(nèi)容),即是該組件會(huì)給所綁定的后臺(tái)bean方法中傳遞三個(gè)數(shù)據(jù),所以并不算通用,不過(guò)還是可以輕松定制的,process所綁定的后臺(tái)方法可以像是這樣的:

          public String quickSend(String title, String toId, String content) {
          // 檢查登錄
          String sender = null;
          if (!getVisitor().isLogin()) {
          sender = "GUEST:" + getVisitor().getIp();
          } else {
          sender = getVisitor().getUser().getId();
          }
          // 檢查空值
          if ("".equals(title) || "".equals(toId) || "".equals(content)) {
          return "failure:錯(cuò)誤,缺少必填項(xiàng)!";
          }
          // .檢查用戶是否存在
          if (!UserAction.isExistUserId(toId)) {
          return "failure:錯(cuò)誤,目標(biāo)用戶(ID)不存在!";
          }
          // 發(fā)送站內(nèi)信
          MessageModel message = new MessageModel();
          message.setBeRead(false);
          message.setContent(content);
          message.setFromUser(sender);
          message.setTitle(title);
          message.setToUser(toId);
          MessageAction.addMessage(message);
          return Constants.OUT_SUCCESS;
          }

          // 因?yàn)榻M件的代碼太長(zhǎng),隨后再發(fā)布組件的源代碼。


          - huliqing@huliqing.name
          - http://www.huliqing.name

          posted on 2008-03-06 17:50 huliqing 閱讀(2323) 評(píng)論(3)  編輯  收藏 所屬分類: JSF

          評(píng)論

          # re: 努力打造一個(gè)創(chuàng)意的開(kāi)源JSF組件包——Tcoco 2008-03-06 21:33 朱遠(yuǎn)翔-Apusic技術(shù)顧問(wèn)

          希望你能參加AOM開(kāi)源產(chǎn)品組,使中國(guó)的開(kāi)源力量可以聚集到一起。  回復(fù)  更多評(píng)論   

          # re: 努力打造一個(gè)創(chuàng)意的開(kāi)源JSF組件包——Tcoco 2008-03-07 02:33 huliqing

          @朱遠(yuǎn)翔-Apusic技術(shù)顧問(wèn)
          你好,謝謝你的關(guān)注,剛剛給你留了言? 真的很希望有一個(gè)好的團(tuán)隊(duì)學(xué)習(xí)提升.
          Email: huliqing@live.com  回復(fù)  更多評(píng)論   

          # re: 努力打造一個(gè)創(chuàng)意的開(kāi)源JSF組件包——Tcoco 2008-04-23 19:39 marry071028

          你好,我正好需要這個(gè)控件的代碼,能共享一下嗎?

          yanglove_775@163.com   回復(fù)  更多評(píng)論   

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          文章原創(chuàng),歡迎轉(zhuǎn)載
          ——轉(zhuǎn)載請(qǐng)注明出處及原文鏈接

          隨筆分類(60)

          隨筆檔案(33)

          最新評(píng)論

          評(píng)論排行榜

          主站蜘蛛池模板: 晴隆县| 纳雍县| 马关县| 岳普湖县| 宜章县| 营山县| 蒙山县| 兴化市| 冕宁县| 运城市| 周宁县| 板桥市| 邢台市| 集安市| 紫金县| 昭平县| 普兰县| 伊吾县| 酒泉市| 林周县| 贵港市| 奉贤区| 句容市| 香港| 乐平市| 海盐县| 南木林县| 昆明市| 张家港市| 洛川县| 滨州市| 鄯善县| 乡城县| 曲沃县| 灵璧县| 东兴市| 凤凰县| 黄龙县| 班玛县| 澎湖县| 喀什市|