基于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的异步表单校验框架依赖文件 下载

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值