Facelets介紹
-
Facelets介紹
JSF和Java服務(wù)器頁面技術(shù)之間的不匹配,是JSF開發(fā)中的一個(gè)嚴(yán)重問題。問題是如何把JSP的動(dòng) 態(tài)內(nèi)容集成到JSF基于組件的模型中。JSP非常重視生成動(dòng)態(tài)內(nèi)容輸出,而JSF需要JSP來協(xié)調(diào)組件模型的構(gòu)建。因?yàn)檫@個(gè)任務(wù)超出了JSP原來的目的, 所以產(chǎn)生了距離。于是,有人認(rèn)為“試圖把 JSF 和 JSP 結(jié)合起來就像試圖要把腳硬塞進(jìn)手套一樣:可能做得到,但是只是更好的解決辦法出現(xiàn)之前的一個(gè)權(quán)宜之計(jì)”。
既然JSF和JSP結(jié)合起來困難重重,期待中的“更好的解決辦法”出現(xiàn)了嗎?是的,這個(gè)解決辦法就是將要為你介紹的Facelets。
Facelets是用來建立JSF應(yīng)用程序時(shí)的一個(gè)可供選擇的表現(xiàn)層技術(shù)。它提供了一個(gè)強(qiáng)有力的模板化系統(tǒng),讓你使用HTML樣式的模板來定義JSF的表現(xiàn)層,減少了組件整合進(jìn)表現(xiàn)層時(shí)候冗余的代碼。
先看一個(gè)簡單的Facelets示例:
1 <html xmlns="http://www.w3.org/1999/xhtml"
2 xmlns:h="http://java.sun.com/jsf/html"
3 xmlns:f="http://java.sun.com/jsf/core">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
6 <title>My First Facelet</title>
7 </head>
8 <body>
9 Hi. My name is Duke. I'm thinking of a number from
10 #{UserNumberBean.minimum} to #{UserNumberBean.maximum}. Can you guess
11 it?
12 <input type="text" jsfc="h:inputText" id="userNo"
13 value="#{UserNumberBean.userNumber}"/>
14 <input type="submit" jsfc="h:commandButton" id="submit" action="success"
15 value="Submit" />
16 </body>
17 </html>你可能會(huì)感覺到這些標(biāo)簽看起來特別熟悉。這就是要點(diǎn)。使用Facelets不需要學(xué)習(xí)額外的模板語言或schema。Facelets的優(yōu)點(diǎn)還有許多,這里不一一點(diǎn)出,關(guān)注Facelets的用戶可瀏覽java.net Facelets項(xiàng)目主頁。
-
Facelets支持
Facelets在解決JSF應(yīng)用程序的展現(xiàn)方面是如此的優(yōu)秀,不少開發(fā)者使用Facelets開發(fā)JSF。支持Facelets的方法很簡單,只要遵循以下步驟即可:
1、將jsf-faceles.jar放到WEB-INF/lib目錄中。注意:jar包需是facelets 1.1.12或以上版本。
2、修改WEB-INF/web.xml,增加以下配置:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>3、修改WEB-INF/faces-config.xml,增加以下配置:
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
建立Facelets的模版頁
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sample Template</title>
</head>
<body>
<h1>#{title}</h1>
<table border="1">
<tr>
<td>
<ui:insert name="menu" />
</td>
<td>
<ui:insert name="body" />
</td>
</tr>
</table>
</body>
</html>
然后建立client頁面:
<ui:composition template="template.xhtml">
<ui:param name="title" value="Here's my Title" />
<ui:define name="menu">Here's My Menu</ui:define>
<ui:define name="body">Here's My Body</ui:define>
</ui:composition>
</body>
瀏覽效果,需要注意的是URL的后綴名需為faces:

posted on 2008-03-05 16:19 gembin 閱讀(1144) 評(píng)論(0) 編輯 收藏 所屬分類: JSF