發表文章

目前顯示的是 3月, 2012的文章

JSF 中 action與actionListener的差異

JavaServer Face (JSF)中,執行網頁頁面上的元件(例如:點選連結h:commandLink, 點選按鈕h:commandButton, 偵測到元件內容onchange, onclick...等)有兩種觸發事件處理方式。 action  eg:  <h:commandButton value="submit" action="nextPage"> action的值作用在於指引到其他頁面,如上述所示,按下submit會跳轉到 nextPage.jsp中 action的內容也可以指到後端交由bean做些邏輯上的處裡,再回傳型態為字串的值來作跳轉頁面 eg:   頁面端 <h:commandButton value="submit" action="controller.goNext"> Bean端 public String goNext(){ ........     return "nextPage" } P.S  1.若回傳null或者method的型態為void將會停留在原先頁面 2.若有制定NavigationRule,字串部分可填入to-view-id actionListener actionListener則是呼叫到bean裡面的method,並且有傳入actionEvent物件。此項目只有負責處裡邏輯上的功能,並沒有頁面呼叫的功用。 eg:  頁面端  <h:commandButton value="submit" actionListener="controller.doSomething"> Bean端  public void doSomething(actionEvent e){ .... } 綜合比較 action: 有回傳值 可導頁 可做商業邏輯處裡 actionListener: 無回傳值 不可導頁 可以做商業邏輯 P.S  兩者可同時使用,也就表示在同一個動作中,至

JavaServer Face 簡介

圖片
JavaServer Face 簡稱 JSF( 官方網站 ),是為了簡化程式設計是在頁面端的設計工作。以往的網頁html語法在呈現面不能與JAVA的framwork緊密的相互的連結,而對於不常設計網頁的設計師來說,可以運用此技術設計網頁的UI介面、處理輸入的驗證(Validation)、做頁面導航規則、處理事件的觸發,功能不足的部分也可以自訂JSTL。 JSF目前最新為2.0板,符合MVC網頁架構的View,除了基本的架構外也有許多UI括中原件,如 ICEfaces , RichFaces , PrimeFaces ...等 。 JSF網頁中所使用到的 tags (eg: h:inputText, h:form, h:commandLink...)是被包裝過的html屬性,以利於跟後方連結的java程式做溝通。不同的UI外掛原件也有自己的tag屬性,上述網址也有許多DEMO範例可以參考。 整體來說JSF是可以解決在網頁設計經驗不足的人身上,路邊隨便抓一個人,用少少的程式碼做出大大的效果。不過面對需要做出如原件連動等有變化的功能則會比較難入手,加上原件是被包裝過的,新舊tag之間甚至會有打架的情形,單一使用是需要注意的。 JSF沒能火紅,我認為是能易於入手(若是有人把環境都先架好更棒),但要再擴充相對也變得比較麻煩。 教學tutorial  http://javaserverfaces.java.net/   or 梁葛格 2012/6/13補充 在頁面端因為結合JSF架構,可以直接使用畫面上的物件。 例如: 下拉式選單、動態表格。 簡單的jsp想要寫下拉選單,要在頁面嵌入<%  JAVA程式碼 %>,用迴圈的方式去組合頁面的html中<select>原件。而JSF自己有selectItem物件方便在Controller端直接存好物件List後給予JSF頁面存取。