Struts資料驗證筆記 (轉)

amyz發表於2007-11-16
Struts資料驗證筆記 (轉)[@more@] 

資料驗證筆記:namespace prefix = o ns = "urn:schemas--com::office" />

to:rainy14f@sohu.com">rainy14f@sohu.com

實踐平臺:2000 Pro. Jbuilder9.0. . Struts1.0

 

1.  關鍵字:ApplicationRes.properties  ActionForm  ActionErrors  ActionError

  .xml 

 

2.  大體步驟:可以在ActionForm的validate方法也可以在Action的perform方法中驗證。兩種方式的區別據說在於web.xml中把”validate”設定為”true”那麼在perform之前會先執行ActionForm的validate方法(我在實驗的時候發現web.xml的validate元素設定為false則無法執行,把這行刪掉也一樣會先執行validate方法,還不知道是為什麼)。在WEB.XML中設定資原始檔和驗證值;在資原始檔中設定錯誤處理需要顯示的提示;在Action或ActionForm類中編寫錯誤處理程式碼;在頁面的適當位置加入以使它在有錯誤的時候把錯誤顯示出來。

 

3.  具體做法:

 

a)  在web.xml檔案中設定如下:

  <>

  action

  org..struts.action.ActionServlet

 

  de

  2

   

 

  config

  /WEB-INF/struts-config.xml

 

 

  validate

  true

 

 

  application

  ApplicationResources

 

  2

 

資原始檔的的由其位置決定,如果是在classes/com/res目錄下,那麼就要設定為com.res.ApplicationResources。資原始檔以properties為副檔名。

 

 

b)  在WEB-INF目錄下的classes子目錄中建立ApplicationResources.properties檔案。

檔案的內容由成對的key和 value組成。比如,設定如下:

index.title=Struts Tutorial

index.title2=Struts教學

errors.header=


Errors

    errors.footer=


error.a=

  • Field A can't be empty

    error.b=

  • Field B can't be empty
  •     errors.header和errors.footer是出錯時struts自動加入的頭和尾。自己定義的錯誤就可以寫在下面error.a,error.b,等號後面是要顯示的內容。

    c)  在Action中編寫錯誤處理的程式碼。

    這裡用到兩個類ActionErrors和ActionError,他們都是包含在org.apache.struts.Action包裡。用ActionError生成新的錯誤,把所有的錯誤儲存在一個類似ArrayList的ActionErrors裡。最後動態生成ActionForward物件,以返回原頁面。

      ActionErrors errors = new ActionErrors(); //生成新的錯誤物件容器

      if( form.getA().equals("") || form.getA()==null ) { //如果有錯誤

      ActionError error = new ActionError("error.a");  //生成新錯誤

      errors.add(ActionErrors.GLOBAL_ERROR, error); //加入到錯誤容器中

    }

     

      if( !errors.empty()) {  //判斷錯誤容器是否為空,不空的話就要顯示出來

      saveErrors(httpServletRequest, errors ); //儲存錯誤

      String str = actionMap.getInput(); //得到使返回的ActionForward

      return new ActionForward(str);  //返回原頁面

      }

      如果要在ActionForm中驗證,把這些語句寫在其validate方法中,並且不需要saveErrors及其後面的語句,直接把errors作為返回值返回就可以了。

    d)  在頁面中顯示錯誤提示

    顯示錯誤的頁面就是前面ActionForward所返回的頁面,也就是按了submit後forward到這個Action的jsp檔案。當然也可以定義成別的jsp檔案,但是上面的程式碼就要改一改。

    在頁面的適當位置(一般是表單上方)加入標誌

    那麼,當有錯誤發生時(在Action裡判斷的),就會按照資原始檔裡的設定顯示出錯誤提示。

    如上面的ApplicationResources.properties 所示,就會象下面這樣:

     


      Errors

    ·  Field A can't be empty


     

    e)  進階

      另一種使用了.text.MessageFormat類,可在訊息中指定替換字串,例如:

    error.invalid=Invalid Number{0}

    建立一個錯誤訊息:

    ActionError error = new ActionError(‘error.invalid’,new Double(-1));

    JSP頁顯示:Invalild Number –1

      還有獲得特定訊息的錯誤關鍵字:

    public String getKey()

      還有獲得替換字串陣列:

    public String[] getValues()


    效果示例:

    輸入表單:

    JBuilder Generated Struts JSP for ActionFovalidation.MyForm




     

    出錯後返回並提示:

    JBuilder Generated Struts JSP for ActionForm validation.MyForm


    Errors

    • Field A can't be empty




     


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

    相關文章