在pom.xml中导入包
<!--JSR303校验-->
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.1.Final</version>
</dependency>
在JavaBean上面用@Pattern注解添加规则
regexp 正则表达式 message 是提示消息
public class Employee {
private Integer empId;
//用 Pattern 注解 给他添加限制规则
@Pattern(regexp = "(^[a-zA-Z0-9_-]{6,16}$)|(^[\\u2E80-\\u9FFF]{2,5})",message = "用户名必须是2- 5位中文或者6- 16位英文和数字的组合")
private String empName;
@Pattern(regexp = "^[a-z\\d]+(\\.[a-z\\d]+)*@([\\da-z](-[\\da-z])?)+(\\.{1,2}[a-z]+)+$",message = "邮箱不合法")
private String gender;
//此处省略其他代码
}
Controller层对传入的数据直接进行校验:
用@Valid注解 表示需要数据校验的东西
BindingResult result表示校验的成功与否
//保存员工信息
@RequestMapping(value = "/emp", method = RequestMethod.POST)
@ResponseBody
public Msg saveEmp(@Valid Employee employee, BindingResult result) {
//创建一个集合 然后把错误信息装进去
Map< String, Object > map = new HashMap<>();
//如果有失败的信息就封装进去
if (result.hasErrors()) {
//校验失败返回信息 在模态框中返回校验失败的信息
List< FieldError > fieldErrors = result.getFieldErrors();
for (FieldError fieldError : fieldErrors) {
//循环保存
map.put(fieldError.getField(), fieldError.getDefaultMessage());
}
//添加到msg中
return Msg.fail().add("errorFields", map);
} else {
//校验成功就返回
employeeService.saveEmp(employee);
return Msg.success();
}
}
前端的javascript
//新增按钮里 保存按钮的方法:
$("#emp_save_btn").click(function () {
//首先进行 前端数据校验
// if (!validate_add_form()) {
// return false;
// }
//后端校验数据变化是否合理
if ($(this).attr("ajax-va") == "error") {
return false;
}
//所有校验成功后进行保存请求
$.ajax({
url: "${APP_PATH}/SSM/emp",
type: "post",
data: $("#empAddModal form").serialize(),
success: function (result) {
//后端再次校验
//返回的值是不是成功的值如果是就执行下面的操作
if (result.code == 100) {
//关闭模态框
$("#empAddModal").modal('hide');
//显示最后一页
to_page(totalRecord)
} else {
//失败后就显示失败的信息 从返回的参数中获取
if (undefined != result.extend.errorFields.gender) {
//邮箱的错误信息
show_validate_msg("#email_add_input", "1", "邮箱不合法");
}
if (undefined != result.extend.errorFields.empName) {
//员工的错误信息
show_validate_msg("#empName_add_input", "1", "用户名可以是2- 5位中文或者6- 16位英文和数字的组合");
}
}
}
})
})