成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

項目中使用JSF的經驗

開發 后端
本文介紹使用JSF的經驗,給大家總結了一下,一共十五條希望對大家日后會有所幫助。

我目前的項目前端使用的是JSF+Seam的架構,目前項目已經進入尾聲,我想把使用JSF的經驗給大家說說,以便大家在使用JSF的時候,少走彎路。

十五條使用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.blogjava.net/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的情況下她是不會讓你過去的。并且列表中要使用selectBooleanRadio,而不是 selectOneRadio或者selectManyRadio。checkbox也是一樣。

12.對于doGet的方式請使用Seam的<s:link>組件。

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

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

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

以上十五條使用JSF的經驗希望對大家日后會有所幫助。

【編輯推薦】

  1. JSF組件模型開發指南
  2. Seam與JSF的加減法
  3. JSF圖形組件管理圖形bean組件
  4. 開發自定義JSF組件
  5. JSF和Tapestry全面比較
責任編輯:佚名 來源: JavaEye
相關推薦

2009-06-22 16:24:33

JSF框架中使用的設計

2009-06-24 17:21:23

JSF框架設計模式

2023-11-30 09:00:00

TypeScript開發

2009-06-23 11:35:44

JSF的Naviati

2018-05-02 09:18:17

Linux技巧嵌入式

2017-07-04 19:02:17

ReacRedux 項目

2024-08-19 01:10:00

RedisGo代碼

2021-08-23 10:40:30

人工智能KubernetesAI

2015-08-03 11:45:37

storyboard

2017-11-13 10:35:24

數據中心設計優勢

2022-09-30 09:04:29

開源開發

2024-10-06 13:41:25

2024-04-01 00:00:00

Redis緩存服務消息隊列

2022-07-21 08:00:00

人工智能開發機器學習

2024-03-14 10:47:58

編程語言物聯網

2024-09-10 09:05:12

SpringREST并發

2011-07-08 15:20:30

seamjsf

2022-11-02 08:28:05

huskyLinter 工具

2024-11-28 09:54:34

項目架構模型

2010-01-18 09:37:39

JSF 2.0Java EE 6
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产综合视频 | 久久精品日 | 国产区视频在线观看 | 国产精品久久性 | 免费黄色成人 | 亚洲精品观看 | 中文字幕成人av | 亚洲国产欧美一区 | 久久精品手机视频 | 成人av网页| 亚洲一区二区久久久 | 在线免费观看黄色网址 | 午夜理伦三级理论三级在线观看 | 一区二区小视频 | 免费黄色录像视频 | 国产一区二区三区在线 | 亚洲一区二区三区免费视频 | 毛片一级片 | 精产嫩模国品一二三区 | 亚洲精品在线免费 | 日本又色又爽又黄又高潮 | 五月婷婷中文 | 日韩一区二区av | 人成在线 | 青青操91 | 精品欧美乱码久久久久久1区2区 | 国产午夜久久 | 日韩国产精品一区二区三区 | 天天操网 | 正在播放国产精品 | 久久久久久九九九九九九 | 色婷婷av777 av免费网站在线 | 日本不卡一区二区三区 | 福利网址| 欧美二区在线 | av中文天堂| 一区二区三区 在线 | 女人天堂av| 日韩免费视频 | 农夫在线精品视频免费观看 | av黄色在线|