Dashboard > OpenSource Project > ... > Spring > 入門 25 - 實作Validator
OpenSource Project Log In   View a printable version of the current page.
入門 25 - 實作Validator
Added by cheetah, last edited by cheetah on Mar 23, 2005
Labels: 
(None)

  使用SimpleFormController時,您可以搭配一個Validator介面的實作,幫助您作基本的伺服端資料驗證工作,您可以設計一個通用的Validator,將之當作一個Bean注入給需要進行表單驗證的其它Bean物件。

  org.springframework.validation.Validator有兩個必須實作的方法:

代碼:

Validator.java
public interface Validator { 
    public boolean supports(Class clazz); 
    public void validate(Object obj, Errors errors); 
}

  supports()方法回傳一個boolean值,表示是否支援對所傳入的物件進行驗證,只有在傳回true的情況下,才會使用validate()進行驗證工作,在validate()中,obj表示傳入的表單物件,您可以對它進行一些驗證,如果有錯誤的話,可以使用errors的reject()或rejectValue()等方法加入錯誤訊息,在後續的處理中,若errors中包括錯誤訊息,會回到getViewPage()所設定的頁面。

  我們來看一個簡單的實作:

代碼:

LoginValidator.java
package onlyfun.caterpillar; 
import org.springframework.validation.Validator; 
import org.springframework.validation.Errors; 

public class LoginValidator implements Validator { 
    public boolean supports(Class clazz) { 
        return clazz.equals(LoginForm.class); 
    } 
    
    public void validate(Object obj, Errors errors) { 
        LoginForm form = (LoginForm) obj; 
        
        if(form.getPassword().length() < 4 ) { 
            errors.rejectValue("password", "less-than-four", null, "密碼不得小於四個字元"); 
        } 
    } 
}

  驗證通常是在檢查資料的完備性、安全性等條件,像是檢查密碼的格式就是一例,至於使用者名稱與密碼是否正確,這該算是後繼的Action的工作,當然這只是一個建議,驗證要進行什麼還是在於您的需求。

  搭配SimpleFormController,您只要在Bean定義檔中加入Validator的Bean定義,以及讓SimpleFormController參考到它即可,例如:

代碼:

.... 
    <bean id="loginValidator" class="onlyfun.caterpillar.LoginValidator"/> 
    
    <bean id="loginAction" class="onlyfun.caterpillar.LoginAction"> 
        <property name="commandClass"> 
            <value>onlyfun.caterpillar.LoginForm</value> 
        </property> 
        <property name="validator"> 
            <ref bean="loginValidator"/> 
        </property> 
        <property name="successView"> 
            <value>success</value> 
        </property> 
        <property name="formView"> 
            <value>form</value> 
        </property> 
    </bean> 
....

  validator屬性參考至loginValidator,只要有設定validator,SimpleFormController就會使用它。配合之前主題中表單登入的範例,您可以自行看看程式執行的結果。

Site powered by a free Open Source Project / Non-profit License (more) of Confluence - the Enterprise wiki.
Learn more or evaluate Confluence for your organisation.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.1.5a Build:#411 Mar 16, 2006) - Bug/feature request - Contact Administrators