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

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

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

    征服jsf

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      6 隨筆 :: 0 文章 :: 27 評論 :: 0 Trackbacks

    我目前的項目前端使用的是jsf+seam的架構,目前項目已經進入尾聲,我想把一些心得體會給大家說說,以便大家在使用jsf的時候,少走彎路。

    1.異常處理問題:請為jsf加入seam框架,看看Seam - 無縫集成JSF,共三部分,里面告訴了你怎么在servlet容器下配合spring使用seam,seam不是一定要在ejb3和jboss下才可以使用。因為單獨使用jsf的話她的異常處理功能很簡陋,跟蹤不到你想看的地方,對于開發很不方便,你只有打開日志才能看到問題所在,而seam在加入phase-listener以后,對jsf不同的生命周期都進行了功能增強,即使不使用seam任何的功能,她也能毫無保留的輸出所有的異常棧。

    2.css問題:如果你想在你的項目中使用jsf,css太重要了,很多剛開始使用jsf的人都不是很習慣jsf基于塊結構開發頁面,因為jsf讓你注意的是展現的內容,而不是展現的樣式,這是完全符合w3開發html的初衷,大家使用<table><tr><td>來做頁面展現布局,其實是錯誤已久的方法,如果在jsf中能了解如何使用css進行布局,jsf不適合復雜頁面設計這句話就不攻自破了。

    3.細心的使用dataTable組件,數據列表是最常用的頁面組件,但是我毫不留情的說jsf的dataTable組件的實現簡直太濫了,它就是jsf開發一大禍根。沒有很方便的解決特定行樣式顯示的問題,沒有解決回退按鈕風險問題,沒有dataScroll和dataTable組件進行數據庫分頁的優雅辦法,數據提交的幻影問題,我的開發很多時間用在了dataTable的和其他組件塊融合上面。不過jsf1.2通過統一el,加入了對jstl的foreach標記的支持,我雖然還沒有使用,但是我認為這有可能成為數據列表開發的一個有力補充。

    4.建議把jsf的模型bean和后臺的業務bean合二為一,這樣可以在前端提交頁面與模型綁定的同時,完成業務bean的數據封裝,并且交由服務層處理一氣呵成。這樣做有個好處,就是我們會想方設法通過各種手段在第一時間就完成模型bean對業務bean的封裝,消除服務層對dto的依賴。這樣是可行的,因為jsf的頁面綁定機制提供了很好的幫助。

    5.請考慮多的使用convert組件,比如列表頁面有個radio塊,提交radio值就是一個int數值,然后在展現邏輯去恢復這個radio值對應的業務模型,這樣增加了展現邏輯處理頁面數據的負擔,而且不好管理,如果把這個工作放在自定義的convert中,讓convert在頁面上顯示int數值,在提交上尋找對象,那么頁面和服務層就屏蔽了這樣的工作,看到的都是對象的進出。

    6.我使用了myfaces一個自己的組件<t:updateListener>,就是跨頁面專遞參數,非常好用,剛使用jsf的朋友,可以看到跳轉的下一個頁面用它怎么做,但是建議傳遞模型對象,不要傳遞數值,你使用jsf就是因為她是基于對象考慮頁面設計的。

    7.小心使用session來處理jsf,jsf過多的使用了session,但是我可以肯定一點,展現層一定是需要基于狀態的方式來做的,這樣可以簡化開發,無狀態的方式會帶來更多的無序代碼。不是每個人都是高手。可以考慮使用seam的conversation來處理,她的長會話特別適合業務編輯,默認的短會話會填補jsf有時容易丟失的短期數據。

    8.調試jsf的問題:有時你使用jsf想知道你的數據在哪個階段變化了,你不會把jsf代碼加入到自己的工程中來調試把,請加入自定義的phaseListener,繼承phaseListener這個接口,你可以在把你的程序設置在任何階段跳出來進行調試。

    9.分頁的問題:在google搜一下,有個http://www.tkk7.com/steady/archive/2005/12/30/26013.aspx提供了分頁的方式,我就在使用,這是目前最可能的方式了把,呵呵,不過要注意她使dataTable的values直接使用了dataModel,她與seam的@dataModel是不兼容的,所以不能使用seam的@dataModel功能,需要使用get方式了。

    10.如果想使用ajax4jsf等ajax框架,你需要使用facelet,讓頁面成為標準的xhtml,記好了,不要寫了一大堆才發現這個問題。

    11.如果你在dataTable列表頁面使用了radio的話,你還想在列表上做一些link操作,一定要在操作上加入immediate=true,否則在沒有選擇radio的情況下她是不會讓你過去的。并且列表中要使用selectOneRadio,如果使用checkbox就要使用selectBooleanCheckbox.組件。

    12.對于doGet的方式請使用seam的<s:link>組件,<%=request.getContextPath() %>問題,提交引起的書簽問題都迎刃而解。

    13.如果你導入了其他頁面,而沒有使用facelet的話,那么導入的那個頁面就要完全符合jsf組件的渲染方式,混合html會解析不出來。反過來在主頁面應該盡量多使用jsf標記與html混合的方式,這樣可以使開發變得簡單,盡管有時候jsf會很丟丑,你試試每個html組件都有個render屬性就知道了。jsf1.2已經把混合的html作為一個output組件來輸出,可以和jsf組件兼容,是件好事。對于混合html這種方式,我想說你關注的是jsf組件和模型的關系,而不一定頁面都得是jsf組件標記。

    14.不要相信jsf運行的速度慢,jsf雖然在樹形組件處理上,每一個階段都經歷了遞歸遍歷,但是要相信jsf依然很快,我現在的系統很快,如果你使用后很慢那是項目產生了問題,而不是框架的產生了問題。

    15.相信jsf一定是下一代表現層的王者,這很重要。

    就這么多把,jsf的能多經驗,我還在摸索當中,有機會還會和大家交流
    fangshun1980@hotmail.com

    posted on 2007-09-09 10:45 方順 閱讀(3235) 評論(12)  編輯  收藏 所屬分類: jsf

    評論

    # re: 共享我在項目中使用jsf的一些經驗 2007-09-09 11:24 yz
    老兄,寫得不錯!有機會討論下JSF.  回復  更多評論
      

    # re: 共享我在項目中使用jsf的一些經驗 2007-09-09 12:20 steady
    相當的不錯,比較全面系統  回復  更多評論
      

    # re: 共享我在項目中使用jsf的一些經驗 2007-09-09 12:40 BeanSoft
    支持一下!  回復  更多評論
      

    # re: 共享我在項目中使用jsf的一些經驗 2007-09-09 13:13 Thomas
    總結得不錯,期待交流。
    MSN: qixiangnj AT gmail DOT com  回復  更多評論
      

    # re: 共享我在項目中使用jsf的一些經驗 2007-09-09 13:58 coolfish
    你好,看來博主對JSF的了解相當深入了.
    我們也在考慮在開發過程中加入JSF. 不過我有一個疑問,JSF的RI和myface之類的是不是不兼容的?就是說如果我采用JSF的RI(我看他組件少了點)就沒辦法采用myface的組件了?反之亦然?

    還有一個問題就象上文里第二點,現在在開發中竟然使用div啊之類的,在jsf中都是定義好的tag,那么我們在使用html本身的標簽時是不是就沒有那么方便了?  回復  更多評論
      

    # re: 共享我在項目中使用jsf的一些經驗 2007-09-09 15:28 Friszart
    很不錯,不過seam里面的bug還是蠻多的,seam-gen是很方便,但也有很多小問題,其提供的一些framework類好像還不能適應真正的開發。。  回復  更多評論
      

    # re: 共享我在項目中使用jsf的一些經驗[未登錄] 2007-09-10 11:14 方順
    感謝大家的回復!
    1.從理論上講RI和myfaceImpl是可以兼容的,因為都使用了規范,但是我傾向使用myfaces tomahawk組件,里面對1.1規范的很多組件進行了增強。
    2.使用div.label.span等是現在html開發的趨勢,而jsf的htmlTag組件,你可以把它看成是div.label等等這些基于塊結構的標記,主要是對styleClass的操作,才是核心,jsf tag和html的使用都是一樣的!使用css很多事情都變得漂亮。
    3.seam還是比較新,但是有很多功能非常好,完全可以選擇使用,這就要看你的權衡了,比如異常處理,狀態增強,以及不錯的擴展組件!  回復  更多評論
      

    # re: 共享我在項目中使用jsf的一些經驗[未登錄] 2007-09-10 11:29 冰峰
    最近在用myfaces/facelets +spring+hibernte做項目,我自己在做的過程也確實遇到了很多問題
    希望以后多多交流
    honeylee0226#gmail.com  回復  更多評論
      

    # re: 共享我在項目中使用jsf的一些經驗 2007-10-20 19:01 bclz
    推薦看一下ICEFaces 的JSF 擴展  回復  更多評論
      

    # re: 共享我在項目中使用jsf的一些經驗 2007-10-29 21:46 嘻哈標明
    我之前用jsf,但是覺得很不方便,,現在看到seam之后,豐富多了,但配合一直出錯,希望多共享seam的項目搭建,謝謝.  回復  更多評論
      

    # re: 共享我在項目中使用jsf的一些經驗 2008-01-06 17:48 xiaopianzi
    我頁面上有很多的commandLink,action到另一個頁面。在a.jsp點擊commandLink后,我發現,頁面總是先到a.jsp的最頂端,然后,才發送出請求跳到b.jsp。如果,我在a.jsp頁面的最下面點了一個commandLink,這時,頁面一下子滾動到了a.jsp的最上面,才到b.jsp。
    想請問大家是不是也是這樣的?
    如果是,怎么解決?謝謝
      回復  更多評論
      

    # re: 共享我在項目中使用jsf的一些經驗[未登錄] 2009-03-11 04:30 joe
    @xiaopianzi

    對jsf還不是很了解
    但是我猜應該是因為href="#"
      回復  更多評論
      

    主站蜘蛛池模板: 久久成人永久免费播放| 免费国产黄网站在线观看可以下载| 久久久青草青青国产亚洲免观| 黄色片免费在线观看| 亚洲综合在线一区二区三区| 亚洲成a人一区二区三区| 青青青国产手机频在线免费观看| 亚洲人成人网毛片在线播放| 亚洲精品第一国产综合境外资源 | a级毛片在线免费| 亚洲成年人电影网站| 亚洲国产午夜福利在线播放| 无码日韩精品一区二区三区免费 | 亚洲精品国产专区91在线| 国产老女人精品免费视频| 久久狠狠躁免费观看2020| 国内成人精品亚洲日本语音| 亚洲国产成人久久精品动漫| 四虎永久在线精品免费影视 | 99视频免费在线观看| 亚洲va在线va天堂成人| 亚洲精品乱码久久久久久中文字幕| 日韩精品成人无码专区免费| 免费萌白酱国产一区二区三区| 亚洲av中文无码字幕色不卡| 亚洲∧v久久久无码精品| 四虎亚洲国产成人久久精品 | 国产亚洲精品自在线观看| 免费高清资源黄网站在线观看| 美女视频黄的免费视频网页| 男女啪啪免费体验区| 国产91在线|亚洲| 亚洲αv久久久噜噜噜噜噜| 亚洲 无码 在线 专区| 久久久久久久久免费看无码| 久久A级毛片免费观看| 久久www免费人成看国产片| 久久精品国产亚洲av品善| 亚洲av午夜精品无码专区| 久久综合亚洲色一区二区三区| 日韩亚洲变态另类中文|