Spring MVC Validator @InitBinder and WebDataBinder;Validator是一个用来我们自定义验证的sping接口,WebDataBinder 绑定你的自定义参数,你直接在你的控制器类中通过@InitBinder 注解的方式配置 Web 数据绑定.registerCustomEditor()是一个属性编辑器,比如自定义的日期编辑它绑定web请求参数到JavaBean的属性;

下面一个例子,我们创建一个JavaBean(username, password, email and date of birth of a user),我们创建两个自定义的验证类.第一个,我们验证用户名和密码.第二个,验证邮箱,
在Eclipse中Demo的结构
Validator 是一个有两个方法的接口;
boolean supports(Class<?> clazz) : 检验参数是否验证成功的实例类;
void validate(Object target, Errors errors) : 如果 supports() 方法返回真, target object 合法. Errors.rejectValue() 方法用一个字段名注册错误信息;
UserValidator.java
package com.concretepage.validators;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
import com.concretepage.User;
@Component
public class UserValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return User.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
User user = (User)target;
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "","Username is empty");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "", "Password is empty");
if (user.getName().length()<5) {
errors.rejectValue("name","", "Username length is less than 5");
}
}
}
EmailValidator.java
package com.concretepage.validators;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
import com.concretepage.User;
@Component
public class EmailValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return User.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
User user = (User)target;
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "email", "","Email is empty");
if (!user.getEmail().contains("@")) {
errors.rejectValue("email","", "Email is not valid.");
}
}
}
User.java
package com.concretepage;
import java.util.Date;
public class User {
private String name;
private String password;
private String email;
private Date dob;
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 getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
}
MyWorldController
package com.concretepage;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.concretepage.validators.EmailValidator;
import com.concretepage.validators.UserValidator;
@Controller
@RequestMapping("/myworld")
public class MyWorldController {
@Autowired
private UserValidator userValidator;
@Autowired
private EmailValidator emailValidator;
@RequestMapping(value="signup", method = RequestMethod.GET)
public ModelAndView user(){
return new ModelAndView("user","user",new User());
}
@InitBinder
public void dataBinding(WebDataBinder binder) {
binder.addValidators(userValidator, emailValidator);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, "dob", new CustomDateEditor(dateFormat, true));
}
@RequestMapping(value="save", method = RequestMethod.POST)
public String createUser(@ModelAttribute("user") @Valid User user,BindingResult result, ModelMap model) {
if(result.hasErrors()) {
return "user";
}
System.out.println("Name:"+ user.getName());
System.out.println("Email:"+ user.getEmail());
System.out.println("Date of Birth:"+ user.getDob());
model.addAttribute("msg", "Welcome to My World!");
return "success";
}
}
Form页面表单
<form:form action="save" method="post" commandName="user">
<tr> <td>User Name:</td> <td><form:input path="name"/> </td>
<td> <form:errors path="name" cssStyle="color: red;"/></td> </tr>
<tr> <td> Password :</td> <td><form:input path="password"/> </td>
<td> <form:errors path="password" cssStyle="color: red;"/> </td> </tr>
<tr> <td> Email :</td> <td><form:input path="email"/> </td>
<td> <form:errors path="email" cssStyle="color: red;"/> </td> </tr>
<tr> <td> Date of Birth :</td> <td><form:input path="dob"/> </td>
<td> <form:errors path="dob" cssStyle="color: red;"/> </td> </tr>
<tr> <td colspan=3> <input type="submit"> </td>
</form:form>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Spring
# WebDataBinder
# SpringMVC Validator验证示例
# BootStrap与validator 使用笔记(JAVA SpringMVC实现)
# 是一个
# 自定义
# 绑定
# 第一个
# 第二个
# 表单
# 错误信息
# 编辑器
# 创建一个
# 大家多多
# 类中
# 字段名
# 有两个
# org
# import
# validators
# rejectValue
# stereotype
# springframework
# java
相关文章:
长沙企业网站制作哪家好,长沙水业集团官方网站?
如何选择域名并搭建高效网站?
网站制作新手教程,新手建设一个网站需要注意些什么?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
如何选择高效可靠的多用户建站源码资源?
贸易公司网站制作流程,出口贸易网站设计怎么做?
如何快速建站并高效导出源代码?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
宁波免费建站如何选择可靠模板与平台?
如何快速查询域名建站关键信息?
建站主机选择指南:服务器配置与SEO优化实战技巧
广德云建站网站建设方案与建站流程优化指南
如何彻底卸载建站之星软件?
高端建站如何打造兼具美学与转化的品牌官网?
大连网站设计制作招聘信息,大连投诉网站有哪些?
如何快速搭建高效WAP手机网站吸引移动用户?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
香港服务器WordPress建站指南:SEO优化与高效部署策略
Bpmn 2.0的XML文件怎么画流程图
,柠檬视频怎样兑换vip?
如何在IIS7中新建站点?详细步骤解析
安徽网站建设与外贸建站服务专业定制方案
python的本地网站制作,如何创建本地站点?
建站主机功能解析:服务器选择与快速搭建指南
宝塔建站后网页无法访问如何解决?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
如何选择适合PHP云建站的开源框架?
西安大型网站制作公司,西安招聘网站最好的是哪个?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
MySQL查询结果复制到新表的方法(更新、插入)
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
无锡营销型网站制作公司,无锡网选车牌流程?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
学校建站服务器如何选型才能满足性能需求?
网站微信制作软件,如何制作微信链接?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
建站之星安装后如何配置SEO及设计样式?
C#如何在一个XML文件中查找并替换文本内容
在线制作视频的网站有哪些,电脑如何制作视频短片?
电商网站制作价格怎么算,网上拍卖流程以及规则?
大型企业网站制作流程,做网站需要注册公司吗?
常州企业网站制作公司,全国继续教育网怎么登录?
如何通过IIS搭建网站并配置访问权限?
相册网站制作软件,图片上的网址怎么复制?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
建站之星如何快速更换网站模板?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
如何通过西部数码建站助手快速创建专业网站?
济南专业网站制作公司,济南信息工程学校怎么样?
*请认真填写需求信息,我们会在24小时内与您取得联系。