程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> 使用G4JSF集成GWT和JSF

使用G4JSF集成GWT和JSF

編輯:J2EE

Google Web Toolkit (GWT) 吸引了一些開發者的注意.因為使用它你可以很容易的添加AJax Web 2.0功能到你的程序中. GWT的設計師努力隔絕用戶和Javascript打交道.你只要使用GWT就可以了,不需要知道如何使用JS. GWT 通過從java代碼來產生JS代碼的\方式 實現了創建高級客戶端JS小組件(clIEnt-side JavaScript widgets)的任務.

與此同時, JavaServer Faces (JSF)聚集了愈來愈多的成為通用服務端web框架的要素.JSF成功的主要原因是:自頂向下的基於組件的方式來開發web程序. 同時JSF帶有自己標准的隨時可用(out-of-the-box)的UI組件 , 它被設計為簡單的包含其他組件庫(it is designed for the easy inclusion of other component librarIEs).

然而,這兩項技術是不可思議的使他們自己獲益,他們兩個相互結合的非常好(相互互補). GWT 不知道服務端的狀態( server-side-agnostic),然而 JSF’s基於組件的結構可以很容易的適應任何組件的渲染.在這篇文章中,我們將討論 (首先通過一個step-by-step 的例子)一個促進這兩個技術互補的新框架.

G4jsf 已經成為Ajax4JSf開源項目的一個子項目了https://AJax4sf.dev.Java.Net ,有它來產生這種集成庫.

GWT和JSF之間看起來是相互競爭的技術,而使用G4JSF則看起來是很自然的互補技術.而G4JSF的任務就是使這種互補關系的技術看起來更自然一些.

關於G4JSf

庫文件包含兩個部分:
◆G4JSf組件開發包( Component Developer Kit)包含 項目骨架產生器.
◆一個 run-time library 提供在GWT widgets和JSF環境之間的過渡作用.

G4jsf 注意了JSF 和 GWT 兩種技術的發展過程\.對於 GWT, widgets仍然在主機模型中開發,並且在使用 Google browser來調試. GWT 項目結構包含 /clIEnt, /public, 和 /server 包, 並且還在繼續維護.

G4jsf 組件開發包(G4jsf CDK)產生的組件包含兩個部分.一是 包含客戶端行為的GWT widget .二是負責 GWT widget 和 JSF 環境之間的通信問題.

G4jsf CDK 使用Facelets方式來寫JSF組件. 它比不同的JSP方式要簡單, 使用普通的方式要創建一個TLD文件和一個Tag類.使用Facelets的方式是相當直接的.

示例程序

在這篇文章中,我們將一步一步的通過一個簡單的"Hello, World" 例子來講述G4JSF的主要功能.我們也創建一個實際的例子,a4j-gwtdemo. 在這裡http://livedemo.exadel.com/a4j-gwtdemo/可以看到該例子.

你可以從Ajax4JSf示例頁面上下載到示例的源代碼和war部署文件 .該https://AJax4JSf.dev.Java.Net/nonav/ajax/AJax-JSf/download.Html#examples文章描述的最終示例版本在哪裡也可以下載到.

雖然我們使用專業的工具(大部分是Ant)來建構這篇文章中的示例,但是這些例子並不需要任何特殊的開發工具,你只需要產生一個標准的Java 項目就可以了,只要注意一個非常重要的關於 GWT compiler的問題就可以了.它產生組件的Javascript代碼,這些代碼應該在META-INF/gwt 文件夾下面 (在 WEB-INF/classes中). 我們建構代碼的compile.JS目標啟動編譯器並且把結果放到一個 JavaSource 目錄中. 確定你的工具copy這些代碼到deployable code中.

下載和設置

1. 訪問https://AJax4JSf.dev.Java.Net/nonav/AJax/gwt/gwt-cdk.Html來下載G4JSf CDK.
為了使用G4JSf CDK, 你需要Google Web Toolkit SDK. 由於版權問題請到這裡單獨下載http://code.google.com/webtoolkit/download.Html.

2. 保存GWT SDK .

3. 把G4JSF CDK中的 build.properties.sample 重命名為 build.propertIEs,打開它,把gwt.home改為你的本地GWT 主目錄.
例如,你把 Google Web Toolkit SDK 解壓到:D:/gwt-Windows-1.1.0
你應該把build.propertIEs 文件中的GWT.home改為下面的代碼:wt.home=D:/gwt-Windows-1.1.0

4. 編輯,保存文件
初始化工作已經做好了,下面來產生項目框架.產生一個項目框架在剛才的目錄下的build文件中有個 "create-component" target. 它需要倆個運行參數:out 產生的項目代碼文件存放的目錄.路徑的最後一部分為項目的名字m odule GWT module的全限定名. 產生的JSF 組件類型將有同樣的名字.讓我們命名模型為 demo.gwt.HelloWidget 保存項目的名字為, KickStart, 在D:/workspace/ 文件夾下. (Of course, you can change any of these.)

5.使用下面的命令運行ant:ant -Dout=D:/workspace/KickStart -Dmodule=demo.gwt.HelloWidget create-componentAnt應該產生了該項目文件

6. 導航到項目目錄."Hello, world!" with GWT讓我們來激活我們的項目.我們在標准的GWT Hosted Mode中來看看效果,在下個部分中將在servlet container中 來允許該例子.

7.打開 JavaSource/demo/gwt/clIEnt/HelloWidgetEntryPoint.Java文件.它包含一個 HelloWidgetEntryPoint 類, 裡面有個返回null的方法.

8. 使用下面的代碼替換該方法:

  1. public class HelloWidgetEntryPoint extends ComponentEntryPoint {
  2. protected Widget createWidget(final String id) {
  3. Button btn = new Button("Click me", new ClickListener() {
  4. public void onClick(Widget sender) {
  5. Window.alert("Hello, World");
  6. }
  7. });
  8. return btn;
  9. }
  10. }

9. 保存文件,到ant文件夾下面.Hosted Mode

10. 使用shell目標啟動ant:ant shell

Google Toolkit Development shell 和 Google browser 啟動了.在browser中顯示了我們剛才創建的button.如果你點擊button ,一個帶問候消息的警告框出現了.

Google browser包含一個 "Compile/Browser" 按鈕.如果你點擊它,你可以在你默認的浏覽器中查看該示例.

目前還沒有任何JSF代碼攙合進來.到此為之我們只是在使用 "Hosted Mode."你可以在該模式下開發和調試你的 GWT widget . 如果你已經有了開發 GWT的經驗了,那麼你應該很熟悉它了. G4jsf CDK 的處理過程和這裡是一樣的.Run-Time Mode下一步是在JSF 環境中運行該示例.

11.使用 "war" target啟動ant:ant warant創建一個文件, build/KickStart.war. 他是一個標准的JaveEE Web 文件.

12. 把它部署到服務器中.例如,復制 KickStart.war到 tomcat的webaPPS 文件夾下.

運行該項目 就可以看到同樣的效果,但是運行在JSF環境中我們稱它為 "Run-Time Mode."我們已經把 GWT widget 包裝為JSF 組件了.這才是集成的第一步.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved