Spring MVC使用MultiActionController搭配Validator校验表单
来源:互联网 发布:2016中国进出口数据 编辑:程序博客网 时间:2024/06/07 08:27
贴出来以告慰下午的好几个小时, 网上的一些解决办法,有的可以验证,但是不能显示errors.
因为是继承MultiActionController,所以在配置文件中就没法制定自己的command名称,导致form中commandName只能为command,不能修改,否则返回信息时提示找不到制定的commandName。
首先bean的定义要有validators
<bean id="LoginController" class="com.libra.web.control.LoginController"><property name="methodNameResolver" ref="paramMethodResolver"/><property name="validators"><list><bean class="com.libra.web.domain.UserValidator"></bean></list></property></bean>
validator的编写比较固定
public class UserValidator implements Validator {public boolean supports(Class clazz) {return User.class.equals(clazz);}public void validate(Object obj, Errors errors) {ValidationUtils.rejectIfEmpty(errors, "username", null, "用户名不能为空");ValidationUtils.rejectIfEmpty(errors, "password", null, "密码不能为空");}}
jsp页面的编写要注意变量名和commandName
<sf:form method="post" commandName="command" action="${pageContext.request.contextPath}/login.htm?action=submit" > <table> <tbody> <tr><td>用户名:</td> <td><sf:input path="username"/></td> <td><sf:errors path="username"/></td></tr> <tr><td>密码:</td> <td><sf:input path="password"/></td> <td><sf:errors path="password"/></td></tr> <tr><td></td><td><input type="submit" value="登陆" name="submit"/></td></tr> </tbody> </table></sf:form>
在继承MultiActionController的类中的处理方法,要注意先手动绑定command,其次调用validator的验证,最后要将验证后的command绑定到ModelAndView
public ModelAndView submit(HttpServletRequest req, HttpServletResponse resp)throws Exception {// validationUser user = (User) newCommandObject(User.class);ServletRequestDataBinder binder = createBinder(req, user);binder.bind(req);Validator[] validators = getValidators();if (validators != null) {for (Validator validator : validators) {if (validator.supports(User.class)) {ValidationUtils.invokeValidator(validator, user, binder.getBindingResult());}}}if (binder.getBindingResult().hasErrors())return new ModelAndView("login").addAllObjects(binder.getBindingResult().getModel());return new ModelAndView("main");}
以上方法验证有效,效果图如下:
这里是一个总结,但是细节流程还没有检查,如果有什么问题,可以留言。
- Spring MVC使用MultiActionController搭配Validator校验表单
- MultiActionController代理使用validator
- SPring MVC 表单校验
- spring mvc 数据校验 -- hibernate-validator
- Spring MVC 入门 @ MultiActionController
- spring mvc MultiActionController !!!
- Spring MVC之MultiActionController
- Spring MVC之MultiActionController
- Spring MVC MultiActionController example
- Spring MVC MultiActionController example
- Spring MVC后台表单校验
- Spring Validator方法级别的参数校验,方法界别参数校验的全局处理,Sping MVC使用Hibernate Validator,自定义校验器
- 使用Spring的Validator接口进行校验
- spring mvc 中使用spring的validator
- spring mvc 中使用spring的validator
- spring mvc 中使用spring的validator
- spring mvc 中使用spring的validator
- spring mvc 控制层validator(校验)中文乱码
- ADO.NET与ORM的比较(2):NHibernate实现CRUD
- MathType重装之后遇到错误,可能的解决方法
- 10个小孩分糖果
- TypedValue.applyDimension,代码实现px与dip转换
- ADO.NET与ORM的比较(3)Linq to SQL实现CRUD
- Spring MVC使用MultiActionController搭配Validator校验表单
- 获取手机的分辨率 dpi,density ,px
- ADO.NET与ORM的比较(4):EntityFramework实现CRUD
- NSNotisfication消息机制
- 我的学习生涯(Delphi篇) - 07
- 青蛙交换
- OSGi Bundle helloworld所遇到问题
- 神奇的【画图】工具,助我数据库【表中字段】的说明。
- 时钟周期,机器周期,指令周期的区别