Struts快速入門(四) (轉)

amyz發表於2007-08-14
Struts快速入門(四) (轉)[@more@]

使用ActionForward導航:namespace prefix = o ns = "urn:schemas--com::office" />

  ActionForward是物件。這些配置物件擁有獨一無二的標識以允許它們按照有意義的名稱如“success”,“failure”等來檢索。ActionForward物件封裝了向前進的URL路徑且被請求用於識別目標檢視。ActionForward物件建立自元素位於-config.xml。下面是一個Struts中元素例子,屬於元素範圍。

type="packageName.EditCustomerProfileAction"

name="customerProfileForm" pe="request">

  基於請求處理器的execute(…)方法的結果,當傳遞一個值匹配指定於元素中name屬性的值的時候,下一個檢視可以在execute(…)方法中被開發者用方便的方法org..struts.action.ActionMap.findForward(…)選擇。ActionMapping.findForward(…)方法既從它的本地範圍又從全域性範圍提供一個ActionForward物件,該物件返回至RequestProcessor以RequestDispatcher.forward(…)或response.sendRedirect(…)下一個檢視。當元素有redirect=“false”屬性或redirect屬性不存在的時候,RequestDispatcher.forward(…)被執行;當redirect=“true”是,將呼叫sendRedirect(…)方法。下例舉例說明了redirect屬性的用法:

   

在struts-config.xml中元素還提供另一個特性以控制元素的的name屬性如何被解釋。該元素用於聯合元素中input屬性,如下所示:

type="packageName.EditCustomerProfileAction"

name="customerProfileForm"

scope="request"

input="profile">

  上述的元素包含一個input屬性及一個向前名稱;該前進名稱與中的相同。在上述的配置中,當ActionForm.validate(…)返回一個非空或非null的ActionErrors物件,RequestProcessor將選擇元素,其name屬性與元素的input屬性擁有相同的值;除非用子類取代RequestProcessor,該行為是確認遇到錯誤的標準行為。對下面的元素宣告,當ActionForm.validate(…)返回一個非空或非null的ActionErrors物件,input屬性提供一個向前的URL以代替向前發生ActionForward的名稱。在inputForward屬性不存在時,這是預設的配置。

  前進指向特定的路徑,如果路徑中沒有”/” 就加上。對於前進或重定向,Struts中的URL在內部被RequestProcessor用下面的結構建立。

如果redirect=true, URL建立如/contextPath/path因為HttpResponse.sendRedirect(…)中解釋URL採用”/”開頭相對於servlet容器根目錄。

如果redirect=false, URI建立如/path因為ServletContext.getRequestDisptacher(…)採用虛擬目錄相關URL。

捕獲表單資料

  JSP規範提供了一個標準方法以在請求時從Bean提取和儲存表單資料,使用。然而這種方法導致了在表示層和JavaBeans間產生很強的耦合;此外HTML文件創作者不得不明白這種並且知道它們在頁面中正確地用法。因為JavaBean可以被標籤或被另一個元件建立和放置在指定的範圍,那樣可能在不同的元件共享JavaBean中產生bean的生命週期管理問題。Struts提供一個機制以提取,儲存和驗證表單資料;同時它克服了的缺點。下面是一對新的元素。

 

  上述例子對映一個packageName.customerProfileForm型別JavaBean的name = customerProfileForm(唯一標識)到一個元素的name = customerProfileForm;請求處理器被提交請求的路徑/editCustomerProfile唯一標識。該表單建立和使用的語義用下面的靜態模型舉例說明:

 

  圖略

ectratio="t">

 

首先,我們將瀏覽這些表單處理語義直到使用簡單JavaBeans物件。這些物件作為ActionForm物件被實現。我們隨後將討論使用DynaActionForm物件進行表單處理,可以在請求時支援屬性的動態集合。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-956542/,如需轉載,請註明出處,否則將追究法律責任。