目前使用MVC架构的java Web框架比较多,其中使用spirngMVC已经占有了很大部分份额。通过最近几天的研究,对springMVC基于hibernate validator表单验证进行整理,方便日后查阅。
一、执行步骤:
1、引入hibernate validator的依赖jar包;
2、编写测试model对象;
3、使用注解对对象属性进行验证;
4、编写jsp文件;
5、后台编写验证结果。
二、具体实现:
1、本测试项目采用maven工程。在pom.xml文件中增加对validator.jar依赖的引入
<!-- validator数据验证 -->
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.4.Final</version>
</dependency>
2、3、设置检测对象的属性:
public class Employee {
//编码
private int eId;
//登录内网账号
@NotEmpty(message="内网账号不能为空")
private String ustcAccount;
//姓名
@NotEmpty(message="姓名不能为空")
private String eName;
//生日
@DateTimeFormat(pattern="yyyy年MM月dd日")
private Date birthday;
//工作职称
private String jobTitle;
//省略其他属性值以及getters()/setters()方法
}
4、编写springMVC请求控制器:
注意:通过model.addAttribute的方式添加Employee对象,jsp可以通过employee获取到对象。
@RequestMapping(value="/add", method=RequestMethod.GET)
public String addPre(Model model){
logger.info("---------->添加用户请求");
Employee ee = new Employee();
model.addAttribute(ee);//也可以使用 model.addAttribute("eee", ee),jsp文件需要使用eee
return "user/addPre";
}
5、jsp文件form表单编写:
5.1首先需要引入spring的form表单标签:
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form"%>
5.2编写form表单:
<sf:form modelAttribute="employee" action="add" method="post"> <sf:input id="ustcAccount" path="ustcAccount" class="form-control" placeholder="请输入内网账号" /> <sf:errors path="ustcAccount"></sf:errors> <sf:input id="eName" path="eName" class="form-control" placeholder="请输入员工名字" />
<sf:errors path="eName"></sf:errors>
<button id="btn_add" class="btn btn-default" type="submit">保存添加</button>
注意:本项目使用bootstrap前端框架,如果没有使用此框架,可以将class/placeholder等省略。
6、提交后台验证:
@RequestMapping(value="/add", method=RequestMethod.POST) public String add(@Validated Employee ee,BindingResult br, Model model, RedirectAttributesModelMap modelMap){ if(br.hasErrors()){ logger.info("有错误"); //返回请求过来的页面,将验证不通过的结果一并返回到页面。注意:不能使用redirect的方式,否则前端收不到错误信息 return "user/addPre"; } logger.info("------->用户信息:"+ee); userService.add(ee); //保存成功后,跳转到初始化界面 return "redirect:init"; }