如何在SSM项目配置springMVC校验框架validator
1.在springMVC配置文件配置添加如下信息
<!-- 表单验证框架 -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> </bean>
<!-- 配置错误信息用于国际化信息验证 -->
<bean id="validatemessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:validatemessages"/>
<property name="fileEncodings" value="utf-8"/>
<property name="cacheSeconds" value="120"/>
</bean>
2.在你对想要验证的Javabean中添加如下信息注解
package com.xtc.bean.teacher;
import java.util.Date;
import javax.validation.constraints.Pattern;
import org.hibernate.validator.constraints.NotEmpty;
public class Teacher {
     /***
      * @author
      * time 2016-8-9
      **/
	//教师ID
	private String id;
	//教师姓名
	@NotEmpty(message="姓名不能为空")
	private String name;
	//登录密码
	@NotEmpty(message="密码不能为空")
	private String password;
	//性别
	@Pattern(regexp="[男女]",message="只能为男或者女,且不能为空")
	private String sex;
	//个人简历
	@NotEmpty(message="个人简介不能为空")
	private String description;
	//头像URL
	@NotEmpty(message="头像Url不能为空")
	private String picUrl;
	//学校名称
	@NotEmpty(message="学校名称不能为空")
	private String schoolName;
	//注册时间
	private Date registDate;
	//备注
	private String remark;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public String getPicUrl() {
		return picUrl;
	}
	public void setPicUrl(String picUrl) {
		this.picUrl = picUrl;
	}
	public String getSchoolName() {
		return schoolName;
	}
	public void setSchoolName(String schoolName) {
		this.schoolName = schoolName;
	}
	public Date getRegistDate() {
		return registDate;
	}
	public void setRegistDate(Date registDate) {
		this.registDate = registDate;
	}
	public String getRemark() {
		return remark;
	}
	public void setRemark(String remark) {
		this.remark = remark;
	}
}
3.在controller中代码如下
@RequestMapping("/addTeacher")
	public ModelAndView addTeacher(@Valid Teacher teacher,BindingResult result){
		Map< String, Object> map=new HashMap<String, Object>();
		if (result.hasErrors()) {
			List<FieldError> errors=result.getFieldErrors();
			for (FieldError fieldError : errors) {
				map.put(fieldError.getField(), fieldError.getDefaultMessage());
			}
			return new ModelAndView("insert",map);
		}
		else {
			teacher.setId(uutil.UUIDUtil.getUUID());
			teacher.setRegistDate(new Date());
			teacherService.insert(teacher);
			return new ModelAndView("success");
		}
	}
@Valid Teacher teacher注解teacher,对表单提交过来的teacher这个bean进行校验,返回校验结果给BindingResult result这个对象,在result.hasErrors()中循环把错误信息添加到map对象里面返回到insert.jsp页面
4.insert.jsp页面代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">
<link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>添加教师数据</title> </head> <body>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="<%=basePath + "/teacher/getAllTeacher"%>">首页</a>
</div> <div class="collapse navbar-collapse"
id="bs-example-navbar-collapse-1"> <form class="navbar-form navbar-left" role="search"
action="getTeacherByName" method="post">
<div class="form-group">
<input type="text" class="form-control" placeholder="教师名字"
name="getName">
</div>
<button type="submit" class="btn btn-default btn-lg">
<span class="glyphicon glyphicon-search" aria-hidden="true">
</span>
</button> </form> <ul class="nav navbar-nav ">
<li><a class="btn btn-default btn-lg" href="<%=basePath + "/teacher/insert"%>">
<span class="glyphicon glyphicon-plus" aria-hidden="true">
</a></li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container-fluid --> </nav>
<center>
<h3>添加教师</h3> <form action="addTeacher" method="post" class="form-horizontal">
<div class="table-responsive">
<table width="500" class="table" >
<tr> <td align="right">姓名:</td>
<td><input type="text" name="name"></td>
<td style=" color:#CC3300">${name}</td> </tr>
<tr> <td align="right">登录密码: </td>
<td><input type="password" name="password" id="inputPassword3" ></td>
<td style=" color:#CC3300">${password}</td> </tr>
<tr>
<td align="right">性别:</td>
<td><input type="text" name="sex"></td>
<td style=" color:#CC3300">${sex}</td>
</tr>
<tr>
<td align="right">个人简介:</td>
<td><input type="text" name="description"></td>
<td style=" color:#CC3300">${description}</td>
</tr>
<tr>
<td align="right">头像Url:</td>
<td><input type="text" name="picUrl"></td>
<td style=" color:#CC3300">${picUrl}</td>
</tr>
<tr>
<td align="right">学校名称:</td>
<td><input type="text" name="schoolName"></td>
<td style=" color:#CC3300">${schoolName}</td>
</tr>
<tr>
<td align="right">备注:</td>
<td><input type="text" name="remark"></td>
<td style=" color:#CC3300"></td>
</tr> </table>
</div>
<input type="submit" value="确认添加" class="btn btn-default"> </form> </center>
</body>
</html>
最后附上结果截图:

点击确认添加后如下

框架所需要的jar包在这里http://download.csdn.net/detail/qq_32780741/9601388
如何在SSM项目配置springMVC校验框架validator的更多相关文章
- 项目总结SpringMVC+hibernate框架 web.xml 分析(2)
		紧接 项目总结SpringMVC+hibernate框架 原理(MVC) applicationContext.xml 文件(3) 这一步讲解项目模块化的配置,项目中每个模块配置一个文件,命名规则为 ... 
- springMVC:校验框架:多规则校验,嵌套校验,分组校验;ssm整合技术
		知识点梳理 课堂讲义 学习目标 能够阐述表单验证的分类和区别 能够运用表单验证的常用注解 能够编写表单验证的示例 能够编写SSM整合的应用案例 能够总结SSM整合的步骤 1 校验框架 1.1 入门-视 ... 
- [SSM项目]二-项目设计和框架搭建
		一 10个实体类 选择Integer 而不是int的原因 :当值为空时,int类型会自动为其初始化,这是我们不希望的. 二 配置Maven 目录结构: src/main/java:业务代码 src/m ... 
- 使用maven搭建ssm项目配置+tomact
		一.代码自动配置:https://www.cnblogs.com/weibanggang/p/10043201.html 二.手动配置 1.创建好maven项目,在pom.xml配置文件 <!- ... 
- ssm项目配置多个数据源
		在项目中到一些问题,一些查询模块需要链接另一个数据库,这时,就可以配置两个数据源进行操作. 1.创建jdbc.properties jdbc.url = jdbc:mysql://localhost: ... 
- apollo 项目配置中心开源框架部署
		apollo 于我带来的好处 1. 项目之前的配置信息全部都在 resources 目录下,当然这里我使用的是 Spring Boot 搭建的项目.使用 apollo 后,配置信息全部转移到 apol ... 
- SSM项目配置随笔
		一.自动扫描 使用Annotation自动注册Bean:在主容器中不扫描@Controller注解,在SpringMvc中只扫描@Controller注解. 1.spring配置文件(扫描注解) &l ... 
- 【SSM】---Spring+SpringMVC+Mybatis框架整合
		参考 百度经验 https://jingyan.baidu.com/article/2a1383288a85a9074a134f1b.html CSDN http://blog.csdn.net/ge ... 
- java web,从零开始,一步一步配置ssm(Spring+SpringMVC+MyBatis)框架
		1.安装JDK: 安装之后要配置环境变量,在系统变量里: 新建变量名JAVA_HOME,变量值C:\Program Files\Java\jdk1.8.0_77: 新建变量名CLASSPATH,变量值 ... 
随机推荐
- clr 元数据
			clr相关编译器编译生成的托管模块由四部分组成:PE32或32+头.clr头.元数据.IL代码. 元数据和IL代码完全对应,保持一致(:>)性. 元数据有很多用途: VS的智能感知,自动补全: ... 
- 做一个gulp+webpack+vue的单页应用开发架子
			1.目标 最近项目上的事情不多,根据我自己的开发习惯,决定开发一些简单的开发架子,方便以后事情多的时候直接套用.本文讲的一个gulp+webpack+vue的单页应用架子,想要达到的目的: 可以通过命 ... 
- 微信小程序初探
			做为码农相信大家最近肯定都会听到微信小程序,虽然现阶段还没有正式开放注册,但大家可以还是可以开发测试. 到微信的WIKI(http://mp.weixin.qq.com/wiki?t=resource ... 
- C#与C++通信
			# C#与C++相互发送消息 # ## C#端: ## namespace CshapMessage { /// /// MainWindow.xaml 的交互逻辑 /// public partia ... 
- iOS开发 适配iOS10
			2016年9月7日,苹果发布iOS 10.2016年9月14日,全新的操作系统iOS 10将正式上线. 作为开发者,如何适配iOS10呢? 1.Notification(通知) 自从Notificat ... 
- BPM生产安全管理解决方案分享
			一.方案概述生产安全管理是企业生产管理的重要组成部分,组织实施好企业安全管理规划.指导.检查和决策,保证生产处于最佳安全状态是安全管理的重要内容和职责.H3 BPM企业生产安全管理解决方案是一套专门为 ... 
- 手把手教你做个人 app
			我们都知道,开发一个app很大程度依赖服务端:服务端提供接口数据,然后我们展示:另外,开发一个app,还需要美工协助切图.没了接口,没了美工,app似乎只能做成单机版或工具类app,真的是这样的吗?先 ... 
- 面向未来的友好设计:Future Friendly
			一年前翻译了本文的一部分,最近终于翻译完成.虽然此设计思想的提出已经好几年了,但是还是觉得应该在国内推广一下,让大家知道“内容策略”,“移动优先”,“响应式设计”,“原子设计”等设计思想和技术的根源. ... 
- 最牛的打字效果JS插件 typing.js
			最新在做公司的一个项目,需要实现一个敲打代码的动画效果,粗意味比较简单,果断自己直接开写,写着写着发现是一个坑.需要支持语法高亮,并不能直接简单的用setTimeout来动态附件innerHTML.苦 ... 
- P/Invoke:C#调用C++
			P/Invoke的全称是Platform Invoke (平台调用) 它实际上是一种函数调用机制通 过P/Invoke我们就可以调用非托管DLL中的函数. P/Invoke依次执行以下操作: 1. 查 ... 
