Manuel en ligne JFinal
/ Validator
Validator
Validator 自身實(shí)現(xiàn)了 Interceptor 接口,所以它也是一個(gè)攔截器,配置方式與攔截器完全一 樣。以下是 Validator 示例:
public class LoginValidator extends Validator {
protected void validate(Controller c) { validateRequiredString("name", "nameMsg", "請(qǐng)輸入用戶(hù)名"); validateRequiredString("pass", "passMsg", "請(qǐng)輸入密碼");
}
protected void handleError(Controller c) { c.keepPara("name");
c.render("login.html");
}
}
protected void validate(Controller c) { validateRequiredString("name", "nameMsg", "請(qǐng)輸入用戶(hù)名"); validateRequiredString("pass", "passMsg", "請(qǐng)輸入密碼");
}
protected void handleError(Controller c) { c.keepPara("name");
c.render("login.html");
}
}
protected void validator(Controller c)方法中可以調(diào)用 validateXxx(…)系列方法進(jìn)行后端校 驗(yàn),protected void handleError(Controller c)方法中可以調(diào)用 c.keepPara(…)方法將提交的值再傳 回頁(yè)面以便保持原先輸入的值,還可以調(diào)用 c.render(…) 方法來(lái)返回相應(yīng)的頁(yè)面。 注意 handleError(Controller c)只有在校驗(yàn)失敗時(shí)才會(huì)調(diào)用。
以上代碼 handleError 方法中的 keepXxx 方法用于將頁(yè)面表單中的數(shù)據(jù)保持住并傳遞回頁(yè), 以便于用戶(hù)無(wú)需再重復(fù)輸入已經(jīng)通過(guò)驗(yàn)證的表單域,如果傳遞過(guò)來(lái)的是 model 對(duì)象,可以使用 keepModel 方法來(lái)保持住用戶(hù)輸入過(guò)的數(shù)據(jù)。