10.2 Validator
Validator自身实现了Interceptor接口,所以它也是一个拦截器,配置方式与拦截器完全一样。以下是Validator示例:
- public class LoginValidator extends Validator {
- protected void validate(Controller c) {
- validateRequiredString("name", "nameMsg", "请输入用户名");
- validateRequiredString("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方法来保持住用户输入过的数据。
keepPara(…) 方法默认将所有数据keep成String类型传给客户端,如果希望keep成为特定的类型,使用keepPara(Class, …) 即可,例如:keepPara(Integer.class, “age”)。
注意:如果keepPara() 造成模板中出现类型相关异常,解决方法参见Template Engine这章的Extension Method小节。
< 10.1 概述
10.3 Validator配置 >
原文: http://www.jfinal.com/doc/10-2