驗證器
Validator 本身實作了 Interceptor 接口,所以它也是一個攔截器,設定方式與攔截器完全一 樣。以下是Validator 範例:
public class LoginValidator extends Validator {
protected void validate(Controller c) { validateRequiredString("name", "nameMsg", "nameMsg", ("pass", "passMsg", "請輸入密碼");
}
protected void handleError(Controller c) { c.keepPara("name");
c.render("login. html");
}
}
protected void validate(Controller c) { validateRequiredString("name", "nameMsg", "nameMsg", ("pass", "passMsg", "請輸入密碼");
}
protected void handleError(Controller c) { c.keepPara("name");
c.render("login. html");
}
}
protected void validator(Controller c)方法中可以呼叫validateXxx(…)系列方法進行後端校驗,protected void handleError(Controller c )方法中可以呼叫 c.keepPara(…)方法將提交的值再傳回頁面以便保持原先輸入的值,也可以呼叫 c.render(…) 方法來傳回對應的頁面。 注意 handleError(Controller c)只有在校驗失敗時才會呼叫。
以上程式碼 handleError 方法中的 keepXxx 方法用於將頁面表單中的資料保持住並傳遞回頁, 以便於使用者無需再重複輸入已經通過驗證的表單域,如果傳遞過來的是model 對象,可以使用keepModel 方法來保持住使用者輸入過的資料。