java隨記

          堅(jiān)持就是勝利!

           

          jsf1.2 自定義日歷組件

          開(kāi)發(fā)自己的jsf組件并不是一件容易的事情,因?yàn)閖sf組件對(duì)于應(yīng)用程序員來(lái)說(shuō)還是過(guò)于復(fù)雜跟耗費(fèi)時(shí)間了。開(kāi)發(fā)不依賴于具體實(shí)現(xiàn)jsf-api的第三方j(luò)ar包的組件就更不容易了,要做的工作比較的多.本例參照了一個(gè)jsf1.1組件的開(kāi)源跟jsf1.2-RI的源碼,理論上應(yīng)該是可以通用的組件,并且是一個(gè)實(shí)用的基于jsf1.2的日歷組件。.因?yàn)樵创a太長(zhǎng),不方便在這里一一貼出來(lái),只好簡(jiǎn)略介紹一下各個(gè)類的功能,及一些配置了,感興趣的朋友可以從附件里下載.如果要用在別的地方可以自己打個(gè)jar包.jsf自定義組件至少需要三個(gè)類:
            處理標(biāo)簽屬性的類com.sun.faces.metal.MetalCalendarTag,維護(hù)狀態(tài)處理輸入的類com.sun.faces.metal.MetalCalendar和一個(gè)外部呈現(xiàn)器類com.sun.faces.metal.MetalCalendarRenderer(其中addRequiredMessage(FacesContext context, MetalCalendar cal)之類的方法很有趣,定義了<h:message> 標(biāo)簽的一些類容),這里著重說(shuō)明一下標(biāo)簽處理類,因?yàn)閖sf1.2跟jsf1.1的實(shí)現(xiàn)有些不一樣,原因是jsf1.2使用了統(tǒng)一的EL語(yǔ)言。
          Jsf1.2中所有的自定義標(biāo)簽的屬性都是一個(gè)javax.el.ValueExpression的實(shí)例,所有的方法綁定都是一個(gè)javax.el.MethodExpression的實(shí)例,不再需要去創(chuàng)建一個(gè)ValueBinding和MethodBiding.關(guān)于這一點(diǎn)可以參考網(wǎng)上的jsf1.2新特性的文檔。com.sun.faces.metal.HtmlBasicRenderer類很干脆,直接從jsf1.2-RI中copy過(guò)來(lái)略加改動(dòng),是com.sun.faces.metal.MetalCalendarRenderer的超類。
          com.sun.faces.metal.metl. StaticResourcePhaseListener類一個(gè)事件監(jiān)聽(tīng)類,它的作用是把一些js,css,圖像文件等輸出到客戶端,以定制組件的外觀,而不是在呈現(xiàn)器類中通過(guò)writerAttribute(“img”,”tt.gif”,”img”)之類的通過(guò)圖象的URL去定位這個(gè)文件。這樣的目的只有一個(gè),就是文件打成jar包,以便供第三方使用。
           com.sun.faces.metal.util.FacesMessage類很也很干脆從javax.faces.application.FacesMessage類繼承而來(lái),實(shí)際上只是為了改變下一FACES_MESSAGES 屬性,使之看起來(lái)像這樣public static final String FACES_MESSAGES = "com.sun.faces.metal.util.Messages"; com.sun.faces.metal.util包中有兩個(gè)Messages.properties屬性文件,一個(gè)是針對(duì)中文的.
          com.sun.faces.metal.util.FacesMessageFactory類也只是從jsf1.2-ri包中復(fù)制過(guò)來(lái)的.這樣我們就可以完全不依賴jsf-api的實(shí)現(xiàn)而定義了自己的message屬性.
          剩下的就是一些輔助類了,也還算容易看的懂.
          原本應(yīng)該很庸長(zhǎng)的一些敘述在這里極度濃縮了,簡(jiǎn)直就是沒(méi)法理解的,好在如果有自定義jsf組件的基礎(chǔ),源碼也應(yīng)該還看得懂.源碼下載

          posted on 2007-10-08 10:58 傻 瓜 閱讀(2905) 評(píng)論(5)  編輯  收藏 所屬分類: Java Server Faces

          評(píng)論

          # re: jsf1.2 自定義日歷組件 2007-10-08 11:44 千里冰封

          不錯(cuò),JSF寫自定義日歷,不容易  回復(fù)  更多評(píng)論   

          # re: jsf1.2 自定義日歷組件[未登錄](méi) 2008-03-17 10:47 dolphin

          good.............very. 學(xué)習(xí)  回復(fù)  更多評(píng)論   

          # re: jsf1.2 自定義日歷組件 2008-04-20 21:43 阿德

          非常感謝LZ 分享!  回復(fù)  更多評(píng)論   

          # re: jsf1.2 自定義日歷組件 2008-07-04 10:35 spear

          我打包引入到項(xiàng)目后,該如何配置呢?  回復(fù)  更多評(píng)論   

          # re: jsf1.2 自定義日歷組件 2008-07-07 15:31 87

          如果引入到項(xiàng)目的話,所配置拷過(guò)去就行了.如果打包成jar文件直接放到web-inf/lib下的話,請(qǐng)參考jsf相關(guān)文檔,看看怎么打包的  回復(fù)  更多評(píng)論   

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(7)

          我參與的團(tuán)隊(duì)

          隨筆分類

          隨筆檔案

          文章分類

          友情鏈接

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 沾益县| 礼泉县| 宜兰县| 武城县| 九寨沟县| 乌兰县| 呼图壁县| 保定市| 武鸣县| 历史| 恭城| 睢宁县| 义马市| 同德县| 丹凤县| 台北县| 夏河县| 房产| 黔西县| 吴桥县| 肃北| 凌源市| 阿荣旗| 金昌市| 分宜县| 榆社县| 宜宾县| 宣恩县| 将乐县| 建水县| 南城县| 饶阳县| 通许县| 屏东县| 确山县| 嵩明县| 伊宁县| 杭州市| 青浦区| 祁阳县| 丘北县|