<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-112  評論-73  文章-0  trackbacks-0

    這兩天項目進行了到了菜單組件的開發(fā).把能使用的JSF的Tree組件都翻了個遍,試了個遍.沒有中意的.要不是太復(fù)雜就是太難用.(好象差不多一個意思^_^).最后決定自己開發(fā)一個Tree組件.

    有如下功能:

    1、數(shù)據(jù)要能夠與bean聯(lián)系起來,因為菜單是動態(tài)的從數(shù)據(jù)庫里取出來或動態(tài)生成的;

    2、要無限級次的(其實有點變態(tài),那有那么層次的菜單);

    3、要是DIV+CSS的,不要table的(這么多大的、知名的JSF組件為什么都是table布局呢?難道他們和我一樣不會用DIV?^_^)

    ...

    在網(wǎng)上一找,有一個DIV+CSS的tree組件出現(xiàn)了。在 http://cnlei.iecn.net/ 

    下來源碼一看很清晰。連我這不懂CSS的也看得明白了一大半。決定就對它進行改造。生成JSF的組件。

    在開發(fā)的過程中有一些要記錄的:

    1、JSF1.2的組件開發(fā)和JSF1.1有的很大的不同。尤其是EL表達式。而且是extends的基類也不同。

    JSF1.2中的TagLib要繼承javax.faces.webapp.UIComponentELTag。


    2、TagLib接受的屬性只能是ValueExpression類型。如果需要用字符型。需要再進行處理。不象JSF1.1中有方法判斷是表達式還是值。

    接受表達的值,并給組件賦值:

    private ValueExpression value;

    ...

      if (value != null)
       component.setValueExpression("value", value);
    如果要接受字符串的屬性要這樣得到字符串的值。

      if (id != null) {
       component.setId(id.getExpressionString());
      }


    3、如果想把組件在Facelets中應(yīng)用,要寫Renderer。(至少我是這樣,不寫Renderer在Facelets中就不能應(yīng)用。但在JSP中可以使用)還要寫一個componets.tablib.xml。

    在Renderer中得到表達式的值:

    ValueExpression valueVe = component.getValueExpression("value");
      if (valueVe != null) {
       Object _object = valueVe.getValue(context.getELContext());

    //...
    }

    4、要在faces-config.xml中配置component 和render-kit.


    總之寫JSF的組件是很麻煩的事情。如果有其他的選擇還是不要自己寫。但是寫好之后用起卻是非常的方便的。

    <xy:tree value="#{menuBean.nodes}" title="#{resource.menu_title}"/>

    一句話就可以生成一樹。很爽吧!


     



    附源碼(Eclipse 工程) 下載源碼

    源碼中沒有相關(guān)jar 包,加在一起太大了沒辦法上傳。用到的jar包如下:
    commons-beanutils.jar
    commons-codec.jar
    commons-collections.jar
    commons-digester.jar
    commons-el.jar
    commons-fileupload.jar
    commons-lang.jar
    commons-logging.jar
    commons-validator.jar
    jakarta-oro.jar
    javaee.jar
    jsf-api.jar
    jsf-impl.jar
    jstl-1.2.jar
    jstl.jar
    log4j-1.2.8.jar
    如果有沒辦法找到可以給我發(fā)Email:wfn_libo # 163.com
    posted on 2007-08-11 19:43 Libo 閱讀(2210) 評論(4)  編輯  收藏 所屬分類: JavaServer Faces

    評論:
    # re: JSF1.2組件 基于DIV+CSS的Tree[未登錄] 2007-08-13 11:50 | wzjin
    建議代碼共享!  回復(fù)  更多評論
      
    # re: JSF1.2組件 基于DIV+CSS的Tree 2007-08-16 15:46 | ginkgo
    同意樓上的觀點,希望可以看到代碼,對學(xué)習(xí)有很大的幫助。  回復(fù)  更多評論
      
    # re: JSF1.2組件 基于DIV+CSS的Tree 2007-08-16 22:41 | 魚腸劍
    現(xiàn)在還在項目中應(yīng)用.并沒有獨立出來.過一段時間充裕一些把它獨立出來.有什么建議可以EMAIL :wfn_libo@163.com  回復(fù)  更多評論
      
    # re: JSF1.2組件 基于DIV+CSS的Tree 更新源碼 2009-02-06 16:33 | Libo
    感謝大家的關(guān)注。現(xiàn)在才附上源碼,有點晚啊 ! 呵。。  回復(fù)  更多評論
      
    主站蜘蛛池模板: 13一14周岁毛片免费| 无码人妻一区二区三区免费视频| 中文字幕视频在线免费观看| 亚洲欧洲一区二区三区| 国产成人不卡亚洲精品91| 国产免费人成在线视频| 黄页网站在线免费观看| 亚洲国产一区二区三区| 一区二区在线视频免费观看| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 国产亚洲精品美女久久久久久下载| 日韩av无码成人无码免费| 亚洲国产成人无码AV在线| 国产大片91精品免费看3| 特a级免费高清黄色片| 亚洲精品无码精品mV在线观看| 成人无码a级毛片免费| 亚洲毛片基地日韩毛片基地| 无码永久免费AV网站| 337p日本欧洲亚洲大胆人人| 亚洲午夜精品久久久久久浪潮 | 亚洲日产韩国一二三四区| 久久99毛片免费观看不卡| 亚洲激情电影在线| 爽爽日本在线视频免费| a在线视频免费观看在线视频三区| 久久亚洲综合色一区二区三区| 一区二区三区观看免费中文视频在线播放 | 日韩在线视频免费| 亚洲桃色AV无码| 亚洲免费观看在线视频| 亚洲av永久中文无码精品| 久久久久亚洲?V成人无码| 日日麻批免费40分钟无码| 亚洲熟妇AV一区二区三区浪潮| 亚洲片国产一区一级在线观看 | 国产av无码专区亚洲av果冻传媒| 91麻豆国产免费观看| 美女尿口扒开图片免费| 亚洲成人中文字幕| 国产成人精品123区免费视频|