基于hibernate_validator的异步表单校验框架使用说明
2016-02-17 13:48
411 查看
表单校验框架使用说明
V 0.3
Ivan
2016.02.17
目录
一、引入依赖 3
1.Maven方式 3
2.Jar方式 3
二、为实体类添加校验注解 3
1.编写实体和添加校验注解 4
三、编写表单页面 5
1.引入依赖 5
2.添加表单 5
3.初始化异步校验器 6
四、编写控制器 7
1.继承BaseController 7
2.编写Action 7
2.1例一(默认通用) 7
2.2例二(包含自定义校验) 8
2.3例三(分组校验) 8
2.4例四(编辑校验) 9
版本概述 10
基于hibernate_validator的异步表单校验框架依赖文件 下载
一、引入依赖
1.Maven方式
2.Jar方式
二、为实体类添加校验注解
更多规则请参考hibernate_validator_reference 4.3 中文版.pdf。
1.编写实体和添加校验注解
三、编写表单页面
1.引入依赖
注意:已经引入jquery的无需再引。
2.添加表单
注意要点:
(1)表单ID、action必填。
(2)如需要返回错误信息,请添加接收错误消息的标签,不限制标签类型和摆放位置,但必须填写ID并以“msg_”开头。
(3)如需验证重复输入是否一致,name需指定被比较输入框的name,格式为“name2:name1”,name2为当前输入框的name,name1为被比较输入框的name。
如看不懂以上规则描述,请直接参考以下代码:
3.初始化异步校验器
四、编写控制器
1.继承BaseController
2.编写Action
注意:按照格式编写即可。
2.1例一(默认通用)
2.2例二(包含自定义校验)
2.3例三(分组校验)
注:如何定义校验组?如何给属性校验绑定分组?请参考hibernate_validator_reference 4.3 中文版.pdf 2.3章 校验组。
2.4例四(编辑校验)
版本概述:
Version: 0.1,2016年2月2日
初步完成整体表单和单属性异步校验通用功能。
Version: 0.2,2016年2月3日
加入多个字段校验输入是否一致功能。
Version: 0.3,2016年2月16日
1. 加入自定义校验功能,便于校验实体中不包含的字段。
2. 可绑定校验错误回调函数,接收到校验错误信息。
基于hibernate_validator的异步表单校验框架依赖文件 下载
V 0.3
Ivan
2016.02.17
目录
一、引入依赖 3
1.Maven方式 3
2.Jar方式 3
二、为实体类添加校验注解 3
1.编写实体和添加校验注解 4
三、编写表单页面 5
1.引入依赖 5
2.添加表单 5
3.初始化异步校验器 6
四、编写控制器 7
1.继承BaseController 7
2.编写Action 7
2.1例一(默认通用) 7
2.2例二(包含自定义校验) 8
2.3例三(分组校验) 8
2.4例四(编辑校验) 9
版本概述 10
基于hibernate_validator的异步表单校验框架依赖文件 下载
一、引入依赖
1.Maven方式
<!-- hibernate表单校验 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version> 5.2.3.Final</version> </dependency> <dependency> <groupId>javax.el</groupId> <artifactId>javax.el-api</artifactId> <version>2.2.4</version> </dependency> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>javax.el</artifactId> <version>2.2.4</version> </dependency>
2.Jar方式
二、为实体类添加校验注解
更多规则请参考hibernate_validator_reference 4.3 中文版.pdf。
1.编写实体和添加校验注解
public class UserInfo implements Serializable { /** * 用户编号 */ private String id; /** * 姓名 */ @NotBlank(message= "姓名不能为空") private String name; /** * 账号 */ @NotBlank(message= "用户名不能为空") @Size (min= 3 , max= 20 , message= "用户名长度只能在3-20之间" ) @Pattern(regexp = "^[A-Za-z_][A-Za-z_0-9]*$", message= "用户名格式不正确") private String account; /** * 口令 */ @NotBlank(message= "密码不能为空") @Size (min= 6 , max= 20 , message= "密码长度只能在6-20之间" ) private String password; /** * 邮箱 */ @Email(message= "邮箱格式不正确") private String email; /** * 上级编号 */ private String parentId; /** * 工号 */ private Long policeNo; //get、set方法自行添加 }
三、编写表单页面
1.引入依赖
注意:已经引入jquery的无需再引。
<script type="text/javascript" src="/resource/common/js/jquery-1.11.3.min.js"></script> <script type="text/javascript" src="/resource/common/js/validation-0.3.min.js"></script> <link href="/resource/common/css/idp.css" rel="stylesheet" type="text/css">
2.添加表单
注意要点:
(1)表单ID、action必填。
(2)如需要返回错误信息,请添加接收错误消息的标签,不限制标签类型和摆放位置,但必须填写ID并以“msg_”开头。
(3)如需验证重复输入是否一致,name需指定被比较输入框的name,格式为“name2:name1”,name2为当前输入框的name,name1为被比较输入框的name。
如看不懂以上规则描述,请直接参考以下代码:
<form id="myForm" method="post" action="user_add.do"> <table> <tr> <td>姓名:</td> <td><input name="name" value="${user.name }" /></td> <td id="msg_name"></td> </tr> <tr> <td>用户名:</td> <td><input name="account" value="${user.account}"/></td> <td id="msg_account"></td> </tr> <tr> <td>密码:</td> <td><input name="password" type="password" /></td> <td id="msg_password"></td> </tr> <tr> <td>确认密码:</td> <td><input name="passwordConfirm:password" type="password"/></td> <td id="msg_passwordConfirm"></td> </tr> <tr> <td>邮箱:</td> <td><input name="email" value="${user.email}"/></td> <td id="msg_email"></td> </tr> <tr> <td>工号:</td> <td><input name="policeNo" value="${user.policeNo}"/></td> <td id="msg_policeNo"></td> </tr> <tr> <td>上级编号:</td> <td><input name="parentId" value="${user.parentId}"/></td> <td id="msg_parentId"></td> </tr> <tr> <td colspan="2"><input value="提交" id="valid_submit" type="button" /></td> </tr> </table> </form>
3.初始化异步校验器
<script type="text/javascript"> $(window).ready(function(){ //表单一 var valid=new Validation(); //valid.init("表单ID","提交按钮ID",校验成功后回调函数); valid.init("myForm","valid_submit",isOk); //默认初始化后即可使用,以下为附加设置,可自行选用,不是必须设置。 //可选1:设置需要异步校验的输入框,填写name名称即可。 valid.setSingel("name,account,password,email,passwordConfirm:password,passwordConfirm2:password") //如果需要异步校验的名称过多,建议分多次设置,如下: valid.setSingel("name,account,password"); valid.setSingel("email"); valid.setSingel("passwordConfirm:password,passwordConfirm2:password"); //可选2:校验成功后返回正确信息,需要先开启‘可选1’。 valid.setRightInfo("填写正确!"); //可选3:绑定校验错误监听器,可获得错误信息。 注:addErrorListener共包含两个参数,第一个参数用于设置需要回调的函数,第二个参数用于设置是否替换原有错误回调方法,默认不替换,设置为替换后错误提示信息需自行实现。 valid.addErrorListener(isError); 或者valid.addErrorListener(isError,true); }); //回调函数请自行编写,以下为简单示例: function isOk(){ alert("添加成功!"); window.location.href="user_list.do"; } function isError(e){ alert(e); } </script>
四、编写控制器
1.继承BaseController
2.编写Action
注意:按照格式编写即可。
2.1例一(默认通用)
/** * 用户添加操作 */ @RequestMapping(value="user_add",method = RequestMethod.POST) public void doAdd(@ModelAttribute UserInfo userInfo,HttpServletRequest request,HttpServletResponse response){ if(super.validate(userInfo, request, response)){//调用父类校验方法 userInfo.setId(UUID.randomUUID().toString()); userInfoManager.add(userInfo); super.flushResponse(response, "success"); } }
2.2例二(包含自定义校验)
/** * 用户添加操作 */ @RequestMapping(value="user_add",method = RequestMethod.POST) public void doAdd(@ModelAttribute UserInfo userInfo,HttpServletRequest request,HttpServletResponse response){ //其它参数校验 Map<String,String> otherError=new HashMap<String, String>(); if(StringUtils.isBlank(request.getParameter("other"))){ otherError.put("other", "其它不能为空!!!!"); } if(super.validate(userInfo, request, response,otherError)){ userInfo.setId(UUID.randomUUID().toString()); userInfoManager.add(userInfo); super.flushResponse(response, "success"); } }
2.3例三(分组校验)
注:如何定义校验组?如何给属性校验绑定分组?请参考hibernate_validator_reference 4.3 中文版.pdf 2.3章 校验组。
/** * 用户添加操作 */ @RequestMapping(value="user_add",method = RequestMethod.POST) public void doAdd(@ModelAttribute UserInfo userInfo,HttpServletRequest request,HttpServletResponse response){ if(super.validate(userInfo, request, response,UserAddGroup.class)){ userInfo.setId(UUID.randomUUID().toString()); userInfoManager.add(userInfo); super.flushResponse(response, "success"); } }
2.4例四(编辑校验)
/** * 用户编辑操作 */ @RequestMapping(value="user_edit",method = RequestMethod.POST) public void doEdit(@ModelAttribute UserInfo userInfo,HttpServletResponse response,HttpServletRequest request) throws Exception{ UserInfo oldUserInfo=this.userInfoManager.get(userInfo.getId()); super.copy(userInfo,oldUserInfo); if(super.validate(userInfo, request, response)){ userInfoManager.update(userInfo); super.flushResponse(response, "success"); } }
版本概述:
Version: 0.1,2016年2月2日
初步完成整体表单和单属性异步校验通用功能。
Version: 0.2,2016年2月3日
加入多个字段校验输入是否一致功能。
Version: 0.3,2016年2月16日
1. 加入自定义校验功能,便于校验实体中不包含的字段。
2. 可绑定校验错误回调函数,接收到校验错误信息。
基于hibernate_validator的异步表单校验框架依赖文件 下载
相关文章推荐
- 2014年50个程序员最适用的免费JQuery插件
- Floating button 常用属性
- date 命令
- EXC_BAD_ACCESS调试
- iOS开发篇(五)SSZipArchive三方框架的使用与介绍
- (1) Python 内置类型 –- 字符串
- 删除重复的字段
- 健康港慢性萎缩性胃炎饮食注意事项
- Java——用户激活邮件工具类
- 在ACE中使用epoll
- cal 命令
- 美国惊人3堂课, 彻底改变中国富二代!
- LeetCode - 18. 4Sum
- 同名程序同时运行限制
- 技术与产品的反思
- as导入eclipse项目出现There are unrecoverable errors which must be corrected first
- 二分查找算法-java
- 冒泡排序
- (转载) 《火星救援》中你应该知道的5个高可用系统故障恢复原则
- bzoj1997