Spring MVC的表单控制器 - 编程入门网
。
我们“惊讶地”发现入参列表并没有包括需要校验的目标表单对象,那如何对目标表单对象实施校验呢?原来目标对象已经包含在errors对象中,在校验方法内部会从errors中取得目标方法并施加校验。 在④处,我们通过正则表达式对Email格式进行校验。我们直接使用JDK 1.4 java.util.regex包中提供的正则表达式工具类完成校验的工作。由于Email模式是固定的,为了提高性能,我们在①处用final static的方式定义了一个Email合法模式的Pattern对象。 编写好UserValidator,我们需要将其装配到UserRegisterController控制器中,其配置如下所示:
在①处我们通过validator指定了一个对User表单对象进行校验的校验器,如果你有多个校验器类(很少见),可以通过validators属性进行指定。 Spring MVC的表单控制器(5)时间:2011-03-14 陈雄华我们通过UserValidator可以很好地完成User对象属性值的格式检查,可是仔细想想是否还存在遗漏呢?也许你已经指出:userName不能和数据库中已有用户名重复!你当然可以在UserValidator中通过注入业务对象完成userName重复性的校验,但对于这种需要通过业务对象完成的校验操作,一种更好的方法是通过覆盖控制器的onBindAndValidate()方法,直接在控制器中提供检验。这带来了一个好处,UserValidator无需和业务对象打交道,而UserRegisterController本身已经拥有了业务对象的引用,所以调用业务对象执行校验非常方便。下面的代码展示了UserRegisterController中onBindAndValidate()的内容: 代码清单 5 UserRegisterController#onBindAndValidate()通过业务对象完成校验
我们在UserRegisterController覆盖了父类的onBindAndValidate()方法,通过BbtForum业务对象的方法判断userName是否已经被占用,如果已经被占用,将相应错误添加到errors对象中。 通过错误标签显示错误 当存在合法性检查错误时,请求被导向到formView的表单页面中。但是如果register.jsp表单页面没有做任何配合操作,校验错误的信息就象空气和电磁波一样,虽然存在但却看不到,如果我们在register.jsp中相应地添加一些Spring错误标签这面魔法镜,错误信息就现形了。下面我们对register.jsp视图文件进行调整,加入显示校验错误的标签: 代码清单 6 register.jsp:添加错误标签
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |