牛仔褲的夏天

          JAVA是藍色的- online

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            30 隨筆 :: 5 文章 :: 15 評論 :: 0 Trackbacks
          是學習JSF的時候了,請看下面摘抄的文章

          Struts和JSF/Tapestry都屬于表現層框架,這兩種分屬不同性質的框架,后者是一種事件驅動型的組件模型,而Struts只是單純的MVC模式框架,老外總是急吼吼說事件驅動型就比MVC模式框架好,何以見得,我們下面進行詳細分析比較一下到底是怎么回事?

            首先事件是指從客戶端頁面(瀏覽器)由用戶操作觸發的事件,Struts使用Action來接受瀏覽器表單提交的事件,這里使用了Command模式,每個繼承Action的子類都必須實現一個方法execute。

            在struts中,實際是一個表單Form對應一個Action類(或DispatchAction),換一句話說:在Struts中實際是一個表單只能對應一個事件,struts這種事件方式稱為application event,application event和component event相比是一種粗粒度的事件。

            struts重要的表單對象ActionForm是一種對象,它代表了一種應用,這個對象中至少包含幾個字段,這些字段是Jsp頁面表單中的input字段,因為一個表單對應一個事件,所以,當我們需要將事件粒度細化到表單中這些字段時,也就是說,一個字段對應一個事件時,單純使用Struts就不太可能,當然通過結合JavaScript也是可以轉彎實現的。

            而這種情況使用JSF就可以方便實現,

          <h:inputText id="userId" value="#{login.userId}">
            <f:valueChangeListener type="logindemo.UserLoginChanged" />
          </h:inputText>

            #{login.userId}表示從名為login的JavaBean的getUserId獲得的結果,這個功能使用struts也可以實現,name="login" property="userId"

            關鍵是第二行,這里表示如果userId的值改變并且確定提交后,將觸發調用類UserLoginChanged的processValueChanged(...)方法。

            JSF可以為組件提供兩種事件:Value Changed和 Action. 前者我們已經在上節見識過用處,后者就相當于struts中表單提交Action機制,它的JSF寫法如下:

          <h:commandButton id="login" commandName="login">
            <f:actionListener type=”logindemo.LoginActionListener” />
          </h:commandButton>

            從代碼可以看出,這兩種事件是通過Listerner這樣觀察者模式貼在具體組件字段上的,而Struts此類事件是原始的一種表單提交Submit觸發機制。如果說前者比較語言化(編程語言習慣做法類似Swing編程);后者是屬于WEB化,因為它是來自Html表單,如果你起步是從Perl/PHP開始,反而容易接受Struts這種風格。

          posted on 2006-03-24 08:58 luckyrobbie 閱讀(214) 評論(0)  編輯  收藏 所屬分類: Struts & Hibernate
          主站蜘蛛池模板: 秦皇岛市| 瑞丽市| 正安县| 团风县| 牙克石市| 沾化县| 确山县| 石棉县| 博湖县| 南漳县| 新龙县| 城口县| 大城县| 比如县| 依安县| 玛纳斯县| 南澳县| 文安县| 怀集县| 手机| 昌邑市| 乌什县| 鄂伦春自治旗| 潍坊市| 华蓥市| 介休市| 兰西县| 和平县| 应城市| 新邵县| 疏勒县| 手游| 宣武区| 申扎县| 千阳县| 兴山县| 曲阜市| 依兰县| 台安县| 宾阳县| 黑龙江省|