JSF in Action 筆記(第三章)

第三章 Warming up: getting around JSF

一、使用JSF要用到的東西:

Sun  的 RI ,Apache的MyFaces,後者提供了更多的特性。決定用後者。

下載了MyFaces的Examples回來,運行了一遍,看到有很多有趣的控件,包括:下拉菜單,樹型控件,所見即所得編輯器等等,更令人激動的是,它們在IE和Firefox裏面運行的效果是一樣的。

IDE習慣了使用Eclipse,但很少有插件能夠很好地支持所見即所得的JSF。MyEclipse可以提供JSF支持,而且最近的一個Milestone版本提供了所見即所得的編輯功能,但是有一個很大的問題,中文字符在源代碼裏會顯示爲UNICODE代碼,查看起來比較麻煩,論壇上已經有人提出了這個問題,希望4.0最終版出來後能解決這個問題。

在尋找專門針對Myfaces的IDE時,結果有點令人失望。MyEclipse只支持最基本的JSF Components,找到一個日本的開源站點,sourceforge.jp,裏面有一個專門針對Myfaces的IDE,FacesIDE,但剛剛纔開始開發,現在是0.1.7版,不知道什麼時候才成熟呢。


二、配置文件

1、web.xml配置文件需要設置的東西

2、JSF配置文件
日常應用程序開發,UI擴展開發,高級開發。
Faces Console可以圖形化配置。
根標籤:<faces-config>
其他標籤均爲可選:
日常應用程序配置及高級擴展註冊:<application> <managed-bean> <referenced-bean> <navigation-rule>
用戶界面擴展註冊:<component> <render-kit> <validator> <converter>
高級特性配置:<lifecycle> <factory>

默認會尋找 WEB-INF/faces-config.xml。也可以通過javax.faces.CONFIG_FILES上下文參數(在web.xml裏面)來指定配置文件。JSF還會在JAR文件(或者其他資源路徑)裏面尋找META-INF/faces-config.xml文件。

3、JSP的include
<jsp:include> <c:import>是動態包含,也就是在運行時把被包含文件的運行結果包含進來。使用動態包含時,需要做兩樣東西:
(1)被包含的文件必須在JSF標籤<f:subview>裏面,這個標籤可以在被包含的文件,也可以放在<jsp:include>語句的前後。
(2)被包含文件中的所有template text和非JSF標籤都應該括在JSF標籤<f:verbatim>裏面。

靜態包含是在翻譯階段把被包含文件加到包含文件裏面,再編譯成可運行的class,所以被包含文件的更新可能沒有影響到包含文件。JSF使用靜態包含沒有任何限制。

4、JSF與其他JSP標籤
無論什麼時候,把一個JSF標籤嵌套在非JSF標籤裏面時,必須爲JSF標籤設置component identifier。
不可以在<c:forEach>等對標籤內容進行反覆處理的標籤內加入JSF標籤,要通過HtmlDataTable組件或者其他組件來遍歷數據集或集合。
可以通過組件的rendered屬性來控制組件的顯示與否,即使控件不能顯示出來,也能記住它的值;如果用<c:if>來控制的話,不顯示的時候值也丟失了。

三、Managed Beans
1、在配置文件裏可以指定Managed Beans的名稱、類、初始化屬性等,但真正創建它是在第一次使用它的時候。

2、生命週期長的對象不能引用生命週期短的對象

3、不能循環引用對象

四、Navigation Rules
1、有兩種方法設定Navigation Case: <from-action>和<from-outcome>

2、可以用*來代表符合要求的<from-view-id>,如果有多個符合要求,則選擇最長的那個

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章