重要数据(用JSR303
校验)
要支持JSR303
,要导入hibernate-validator
jar包
<!--支持JSR303数据校验的jar包-->
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.10.Final</version>
</dependency>
然后给要校验的对象中要校验的属性添加要求就可以了:
message
是返回的错误信息,regexp
是正则表达式
@Pattern(regexp = "^[\\u4E00-\\u9FA5A-Za-z0-9]{3,10}$",message = "" +
"名字必须是3~10位中文,英文,数字")
private String empName;
private String gender;
@Pattern(regexp = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"
,message = "邮箱格式不正确")
private String email;
然后在Controller
中为封装好的要校验的对象前面添加@Valid
注解,代表里面的对象的数据要进行校验
/**
*新增员工的方法
*因为传过来的表单数据的key(就是你表单input中设置的name值)值和Employee中的属性一样,所以可以自动封装
*/
@RequestMapping(value = "/addemp",method = RequestMethod.POST)
@ResponseBody
//@Valid: 代表里面的对象的数据要进行校验
//BindingResult result:存放校验结果
public Msg addemp(@Valid Employee employee, BindingResult result){
if (result.hasErrors()){
//校验失败,返回错误信息并在模态框中显示
Map<String,Object> map = new HashMap<>();
List<FieldError> fieldErrors = result.getFieldErrors();
for (FieldError fieldError : fieldErrors) {
map.put(fieldError.getField(),fieldError.getDefaultMessage());
}
return Msg.fail().add("errorFields",map);
}else {
employeeService.addemp(employee);
return Msg.success();
}
}
然后回到index
页面中点击保存员工的保存按钮中修改,之前是直接关闭模态框,现在判断有哪个字段的错误信息就显示哪个字段的错误信息出来
//模态框中保存按钮的点击事件
$("#emp_save_btn").click(function () {
//校验表单数据是否合法
if (!emps_add_jiaoyan()) {
return false;
}
//判断之前的ajax用户名校验是否成功
if ($(this).attr("ajax-va") == "error") {
return false;
}
//利用jQuery提供的方法序列化表单中的员工信息,序列化后的数据如下:
//empName=nyh&email=nyh%40qq.com&gender=M&dId=2
//发送ajax请求保存员工
$.ajax({
url:"${APP_PATH}/emp",
type:"POST",
data:$("#empAddModal form").serialize(),
success:function(result){
//alert(result.msg);
if(result.code == 100){
//员工保存成功;
//1、关闭模态框
$("#empAddModal").modal('hide');
//2、来到最后一页,显示刚才保存的数据
//发送ajax请求显示最后一页数据即可
to_page(total);
}else{
//显示失败信息
//console.log(result);
//有哪个字段的错误信息就显示哪个字段的;
if(undefined != result.extend.errorFields.email){
//显示邮箱错误信息
show_validate_msg("#email_add_input", "error", "后端校验:"+result.extend.errorFields.email);
}
if(undefined != result.extend.errorFields.empName){
//显示员工名字的错误信息
show_validate_msg("#empName_add_input", "error", "后端校验:"+result.extend.errorFields.empName);
}
}
}
});
});
测试,把前端的表单校验注释掉:
然后填写错误的邮箱点击保存:
提示信息出来,证明成功了