數據驗證以及ActionError

數據驗證以及ActionError
 
創建一個數據驗證邏輯對任何應用來說都是一個重要的和花費時間的部分。幸運的是,Struts提供了一個易用的、強大的方法來爲你處理它們。

這個功能分爲兩部分:

l     提供一個易用的方法,在發現錯誤時捕獲它的信息。

l     向View組件標記信息可用,其方式對View組件訪問和在需要時顯示這些信息都非常容易。

Struts框架提供了兩個類來輔助你:

l     ActionError 這個類被用來表現一個單一的驗證錯誤。

l     ActionErrors 這個類提供了一個空間來保存所有你創建的單個的ActionError對象。當你創建ActionError對象時,你僅需要簡單地把它們填充到一個ActionErrors容器,然後繼續處理。

這兩個類解決了如下問題:ActionError類使得捕獲錯誤變得非常容易,並且對你編寫代碼也非常便利。ActionErrors類存儲若干ActionError,並且使它們對你的JSP文件來說更容易獲得。

Hello World!應用已經被定義爲含有兩個不同類型的錯誤:基本的數據/表單驗證錯誤,以及業務邏輯錯誤。這兩個類型的需求是:

l     表單驗證——在數據項表單中,確認用戶沒有在person字段爲空時提交表單。

l     業務邏輯——強制規則,就是用戶不可以向被許可的人說Hello。(因爲Atilla Hun有非常不好的名聲,讓我們指定他爲不想對話的人)

注意

將錯誤分爲兩種類型僅僅是爲了演示的目的。這使我們有可能展示錯誤在表單Bean以及在Action類中的處理(將在下一節介紹)。

在實踐中,將驗證錯誤分爲這樣兩種類別也並不少見。根據應用程序的實際情況,可以做出你自己的選擇。

第一個驗證(數據/表單驗證)類型在表單Bean中完成。下面的代碼是從HelloForm.java提取的代碼片斷,演示了這種類型:

public ActionErrors validate(ActionMapping mapping,

               HttpServletRequest request) {



  ActionErrors errors = new ActionErrors();



  if ((person == null) || (person.length() < 1))

    errors.add("person", new ActionError("ch01.hello.no.person.error"));



  return errors;

}

如果validate()方法返回一個空的ActionErrors對象,Struts就認爲沒有錯誤,同時處理則移向Action類。如果ActionErrors含有任何一個ActionError元素,用戶將被重定向到一個合適的頁面來改正錯誤。

如果處理被重定向,以使用戶修正數據項,ActionErrors對象帶着若干單個的ActionError元素,回到View來進行顯示。View組件可以直接或者通過
標記來訪問ActionErrors 。
 
發佈了48 篇原創文章 · 獲贊 2 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章