java web中<td>_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的结构

536daff0ccc1097370ce53c4832100c7.png

ba375adb522547d2ccce85cd7799902e.png

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页面表单

User Name: Password : Email : Date of Birth :

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<td>2023058</td> <td>10 17 22 26 30 33 + 11</td> <td>×</td> <td>×</td> <td>×</td> <td>×</td> <td>×</td> <td>×</td> <td>×</td> <td>×</td> <td>×</td> <td>×</td> <td >0</td> </tr> <tr class="new"> <td>2023059</td> <td></td> <td>24</td> <td>10</td> <td>26</td> <td>31</td> <td>12</td> <td>33</td> <td>24</td> <td>08</td> <td>31</td> <td>24</td> <td></td> </tr> <tr> <td colspan="2">正确次数</td> <td>4</td> <td>3</td> <td>7</td> <td>2</td> <td>9</td> <td>3</td> <td>4</td> <td>5</td> <td>3</td> <td>6</td> <td></td> </tr> <tr> <td colspan="2">错误次数</td> <td>16</td> <td>17</td> <td>13</td> <td>18</td> <td>11</td> <td>17</td> <td>16</td> <td>15</td> <td>17</td> <td>14</td> <td></td> </tr> <tr> <td colspan="2">当前连对</td> <td>0</td> <td>0</td> <td>0</td> <td>0</td> <td>0</td> <td>0</td> <td>0</td> <td>0</td> <td>0</td> <td>0</td> <td></td> </tr> <tr> <td colspan="2">当前连错</td> <td>1</td> <td>4</td> <td>2</td> <td>4</td> <td>1</td> <td>7</td> <td>1</td> <td>2</td> <td>13</td> <td>3</td> <td></td> </tr> <tr> <td colspan="2">最大连对</td> <td>2</td> <td>1</td> <td>3</td> <td>1</td> <td>2</td> <td>1</td> <td>2</td> <td>2</td> <td>2</td> <td>2</td> <td></td> </tr> <tr> <td colspan="2">最大连错</td> <td>9</td> <td>7</td> <td>4</td> <td>12</td> <td>3</td> <td>7</td> <td>7</td> <td>4</td> <td>13</td> <td>3</td> <td></td> </tr> </table> </div> </div> </div> <script type="text/javascript" src="https://img.78500.cn/mobile/iscroll.js"></script> <script type="text/javascript"> var wrapper; function loaded() { wrapper = new iScroll("wrapper", { vScrollbar: false, hScrollbar: false, zoom: true, zoomMin: 0.5, zoomMax: 1 }); } document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false); document.addEventListener('DOMContentLoaded', loaded, false); </script></body> </html> 对应上代码用正则表达式提取 以 <tr class="new"> 开头 </tr>结束 里面的数字
05-25

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值