瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          JSFJavaServer Faces
           

          JSFJAVA EE規(guī)范的一部分。它是:Java Web應(yīng)用的用戶界面框架。

          l         JSF提供一套API以及標(biāo)簽庫,用來創(chuàng)建頁面表單以及復(fù)雜的界面元素

          l         JSF使得編寫表單提交的代碼更加簡單,這些代碼可以響應(yīng)那些不同的按鈕提交,改變某些值或某些用戶的選擇等等

          l         Managed beans:使得JSF簡化了處理請(qǐng)求參數(shù)的方法

          l         ELExpression Language):JSF有一套表達(dá)式語言用來訪問java bean的屬性以及集合元素等。

          l         提供表單域類型轉(zhuǎn)換以及驗(yàn)證

          實(shí)現(xiàn)包

          Apachemyfaces包是第一個(gè)開源的JSF實(shí)現(xiàn)。Myfaces有一些擴(kuò)展的包,這些包是對(duì)JSF標(biāo)準(zhǔn)組件的擴(kuò)充,可以協(xié)助我們更加快速的開發(fā)。Myfaces的擴(kuò)展包括:

          * Tomahawk myfaces提供了一系列遠(yuǎn)遠(yuǎn)超過規(guī)范規(guī)定的組件,這些組件可以兼容JSF1.1的參考實(shí)現(xiàn),以及其它兼容JSF1.1規(guī)范的其它實(shí)現(xiàn),當(dāng)然也兼容myfacesJSF實(shí)現(xiàn)。

           

          * Tobago:目標(biāo)是提供一套基于JSF以及myfaces的良好設(shè)計(jì)的UI組件。Tobago不僅僅只是一套標(biāo)簽庫。下面的幾點(diǎn)讓它與其它框架不同:

                 - 無需HTML設(shè)計(jì),聚焦于商業(yè)應(yīng)用程序的開發(fā)。開發(fā)者可以將精力集中在用戶界面上,而不是網(wǎng)頁。

                 - UI組件是對(duì)HTML的抽象,它不僅僅可以用于HTML頁面,它的輸出格式可以定制。

                 - “主題”機(jī)制,使得可以很容易切換應(yīng)用程序的外觀。

                 - 布局管理器可以自動(dòng)排列組件,這就意味著無需使用HTML表格或其它技術(shù)來手工管理組件的布局。

           

          * TrinidadJSF1.1的組件庫

          最新的myfaces包(版本是:1.1.1)是對(duì)JSF1.1規(guī)范的實(shí)現(xiàn)。

          UI組件模型

          JSF提供一套豐富靈活的組件模型,包括:

          l         一套UIComponent類,定義UI組件的狀態(tài)和行為。

          l         呈現(xiàn)模型:定義如何用不同的方式來呈現(xiàn)組件

          l         事件和監(jiān)聽器模型用來處理組件的事件。

          l         轉(zhuǎn)換模型:進(jìn)行數(shù)據(jù)轉(zhuǎn)換

          l         驗(yàn)證模型:如何驗(yàn)證數(shù)據(jù)的合法性

           

          UI組件類

          比如UIFormUIInput等等,具體請(qǐng)參考文檔。

          組件呈現(xiàn)模型

          不同的組件會(huì)有不同的呈現(xiàn)方式,同一個(gè)組件可能會(huì)有不同的呈現(xiàn)方式,比如UISelectOne,可以使用radio來呈現(xiàn),也可以使用下拉框來呈現(xiàn)等。這些,都是通過呈現(xiàn)模型來定義的。

          數(shù)據(jù)轉(zhuǎn)換模型

          當(dāng)一個(gè)組件綁定到一個(gè)對(duì)象上之后,對(duì)于組件數(shù)據(jù)來說,總共有兩個(gè)視圖:

          一個(gè)是模型視圖:從這個(gè)角度去看,數(shù)據(jù)表現(xiàn)為java對(duì)象的類型,如int ,long,Date等等

          一個(gè)是呈現(xiàn)視圖:從這個(gè)角度去看,數(shù)據(jù)表現(xiàn)為一種可以被人讀取或修改的形式。比如一個(gè)Date類型,可能被展現(xiàn)為一個(gè)yyyy-MM-dd格式的字符串,或者是三個(gè)字符串,分別代表年、月、日。

          可以定義自己的轉(zhuǎn)換器來轉(zhuǎn)換數(shù)據(jù)。

          事件與監(jiān)聽器模型

          事件:值改變事件、動(dòng)作事件、數(shù)據(jù)模型事件。

          值改變:比如輸入框的值被更改、選中了checkbox

          動(dòng)作事件:點(diǎn)擊按鈕或超鏈接

          數(shù)據(jù)模型事件:UIData組件的一行被選中的時(shí)候觸發(fā)這個(gè)事件。

          導(dǎo)航模型


          Navigation-rule,可以包含一個(gè)from-view-id和多個(gè)
          navigation-case
          每個(gè)navigation-case中,主要包括轉(zhuǎn)向的頁面。

          From-view-id 當(dāng)前頁面

          From-action:從哪個(gè)action方法

          From-outcome:從哪個(gè)邏輯名稱

          To-view-id:轉(zhuǎn)向哪個(gè)頁面

           導(dǎo)航解決的問題是:從哪里到哪里。一句話來說就是:從from-view-id頁面,當(dāng)from-action方法被調(diào)用而且其返回值是from-outcome的時(shí)候,轉(zhuǎn)向to-view-id頁面。

           當(dāng)導(dǎo)航發(fā)生的時(shí)候,即使沒有調(diào)用action方法,但也會(huì)設(shè)置相應(yīng)Backing Bean的屬性(如果當(dāng)前的Form域綁定了屬性的話)。

           

          安裝JSF:下載http://java.sun.com/j2ee/javaserverfaces/download.html
           

          1、在Eclipse中添加JSF的支持:

           
           

          不要選擇Install JSF Jars and packaged TLDS和Install JSF TLDs,因?yàn)槲覀円惭b的版本跟Eclipse支持的版本不一樣,我們用的是新的版本。在MyEclipse中添加支持的目的,是為了可以使用MyEclipse的頁面導(dǎo)航設(shè)計(jì)器,避免我們手工編寫頁面導(dǎo)航的繁瑣性。

          點(diǎn)擊完成即可。

           

          myEclipse添加了JSF的配置文件和修改了web.xml文件!

          為了跟新版本的myfaces配合,我們最好將web.xml中關(guān)于myfaces的配置全部按照下面的說明重新配置一遍:

          我們的例子以myfaces的實(shí)現(xiàn)包以及Tomahawk的擴(kuò)展包作為學(xué)習(xí)JSF的起點(diǎn)。

          依賴包可以在tomahawk-examples-1.1.6-bin/myfaces-example-blank-1.1.6.war中找到。

           

          2、添加依賴包:


           

          將依賴包拷貝到WEB-INF/lib下面,如果已經(jīng)有的包,可以選擇覆蓋或不覆蓋,然后解決其中版本有沖突的包,將低版本的包去掉!

          沖突的包主要包括:commons-collections,commons-fileupload,commons-lang,commons-logging

           

          3、修改web.xml文件,添加如下內(nèi)容:

          l         指定配置文件的位置

           <context-param>

              <param-name>javax.faces.CONFIG_FILES</param-name>

              <param-value>/WEB-INF/faces-config.xml</param-value>

           </context-param>

          l         Tomahawk的過濾器,用于解釋那些擴(kuò)展的功能

           <filter>

              <filter-name>extensionsFilter</filter-name>

              <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>

           </filter>

           <filter-mapping>

              <filter-name>extensionsFilter</filter-name>

              <url-pattern>*.jsf</url-pattern>

           </filter-mapping>

           <filter-mapping>

              <filter-name>extensionsFilter</filter-name>

              <url-pattern>/faces/*</url-pattern>

           </filter-mapping>

          l         MyfacesServlet

           <servlet>

              <servlet-name>Faces Servlet</servlet-name>

              <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

              <load-on-startup>1</load-on-startup>

           </servlet>

           <servlet-mapping>

              <servlet-name>Faces Servlet</servlet-name>

              <url-pattern>*.jsf</url-pattern>

           </servlet-mapping>

          4、在WEB-INF目錄下,添加faces-config.xml配置文件

          <?xml version="1.0"?>

          <!DOCTYPE faces-config PUBLIC

           "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"

           "http://java.sun.com/dtd/web-facesconfig_1_1.dtd" >

          <faces-config>

             

          </faces-config>

          下一篇將結(jié)合MyEclipse對(duì)JSF的支持來開發(fā)JSF的程序。

           


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 龙川县| 隆安县| 磐石市| 英吉沙县| 泗水县| 涡阳县| 兴和县| 旬阳县| 大渡口区| 吴忠市| 绍兴县| 南漳县| 武隆县| 孝感市| 清涧县| 凤山县| 浑源县| 佛学| 靖宇县| 静乐县| 正镶白旗| 额尔古纳市| 大邑县| 合肥市| 景德镇市| 衡水市| 尼木县| 江都市| 延庆县| 东安县| 通辽市| 鱼台县| 阿尔山市| 遂溪县| 阿巴嘎旗| 兴国县| 南江县| 汉源县| 玛多县| 新巴尔虎左旗| 金沙县|