全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Spring中WebDataBinder使用详解

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 


相关文章: 建站主机选虚拟主机还是云服务器更好?  ,石家庄四十八中学官网?  建站org新手必看:2024最新搭建流程与模板选择技巧  如何在云虚拟主机上快速搭建个人网站?  建站之星如何实现PC+手机+微信网站五合一建站?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  制作证书网站有哪些,全国城建培训中心证书查询官网?  如何在景安服务器上快速搭建个人网站?  测试制作网站有哪些,测试性取向的权威测试或者网站?  如何在腾讯云服务器快速搭建个人网站?  如何通过西部数码建站助手快速创建专业网站?  如何破解联通资金短缺导致的基站建设难题?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  如何获取开源自助建站系统免费下载链接?  C#怎么使用委托和事件 C# delegate与event编程方法  建站之星北京办公室:智能建站系统与小程序生成方案解析  网站制作难吗安全吗,做一个网站需要多久时间?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  开封网站制作公司,网络用语开封是什么意思?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  建站之星如何实现五合一智能建站与营销推广?  深圳网站制作的公司有哪些,dido官方网站?  简单实现Android验证码  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  建设网站制作价格,怎样建立自己的公司网站?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  建站之星展会模板:智能建站与自助搭建高效解决方案  实例解析Array和String方法  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  如何高效搭建专业期货交易平台网站?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  如何通过虚拟机搭建网站?详细步骤解析  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  如何在IIS管理器中快速创建并配置网站?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  Python如何创建带属性的XML节点  如何快速登录WAP自助建站平台?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  深圳网站制作培训,深圳哪些招聘网站比较好?  php json中文编码为null的解决办法  专业网站建设制作报价,网页设计制作要考什么证?  建站之星备案流程有哪些注意事项?  建站之星导航菜单设置与功能模块配置全攻略  如何用好域名打造高点击率的自主建站?  建站主机与虚拟主机有何区别?如何选择最优方案?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  微信h5制作网站有哪些,免费微信H5页面制作工具? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。