08 数据绑定之校验
发布日期:2022-03-30 20:19:32 浏览次数:35 分类:博客文章

本文共 4059 字,大约阅读时间需要 13 分钟。

错误数据进入系统是要被限制的,比如本来是工资,却输入了“abc”;本来是人的年龄,却输入了12000。凡此种种都会降低系统的稳定性。本节将阐述springmvc中的数据校验。

1、环境约束

  • win10 64位操作系统
  • idea2018.1.5
  • jdk-8u162-windows-x64
  • spring4.2.4

2、前提约束

  • 完成基于注解的springmvc的demo

3、操作步骤

  • 在pom.xml中加入依赖
org.hibernate
hibernate-validator
5.4.1.Final
  • 在spring-mvc.xml加入以下内容:
  • 在src文件夹下创建validatemessages.properties【错误提示信息所在文件,与代码解耦合】,内容如下:
account.length.notsuit=the lenght of account is not required!!
  • 在src文件下创建net.wanho.entity.User.java
import org.hibernate.validator.constraints.Length;import org.springframework.format.annotation.DateTimeFormat;import java.io.Serializable;import java.util.Date;public class User implements Serializable {    private int id;    @Length(min=4,max = 10,message = "{account.length.notsuit}")    private String name;    @DateTimeFormat(pattern="yyyy-MM-dd")    private Date date;    public User(int id, String name) {        this.id = id;        this.name = name;    }    public User() {    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public Date getDate() {        return date;    }    public void setDate(Date date) {        this.date = date;    }    @Override    public String toString() {        return "User{" +                "id=" + id +                ", name='" + name + '\'' +                '}';    }    public void setName(String name) {        this.name = name;    }}
  • 在src文件夹下创建net.wanho.controller.ValidateController.java,内容如下:
import com.alibaba.fastjson.JSONObject;import net.wanho.entity.User;import org.springframework.stereotype.Controller;import org.springframework.validation.BindingResult;import org.springframework.validation.FieldError;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.servlet.ModelAndView;import javax.validation.Valid;import java.util.ArrayList;import java.util.List;@Controllerpublic class ValidateController {    @RequestMapping("/validate/test1")    public ModelAndView test1(@Valid User user, BindingResult bindingResult) {        List
errorList = new ArrayList<>(); ModelAndView modelAndView = new ModelAndView(); if (bindingResult.hasErrors()) {//有问题 for (FieldError fieldError : bindingResult.getFieldErrors()) { errorList.add(fieldError.getDefaultMessage()); } modelAndView.setViewName("error"); modelAndView.addObject("error", errorList); return modelAndView; } else { //正确逻辑往下走 modelAndView.setViewName("success"); } return modelAndView; } @RequestMapping("/validate/test2") @ResponseBody public JSONObject foo1(@Valid User user , BindingResult bindingResult) { JSONObject jsonObject = new JSONObject(); List
errorList = new ArrayList<>(); if(bindingResult.hasErrors()){ for (FieldError fieldError : bindingResult.getFieldErrors()) { errorList.add(fieldError.getDefaultMessage()); } jsonObject.put("status",400); jsonObject.put("errors",errorList); return jsonObject; } jsonObject.put("status",200); return jsonObject; }}
  • 在web文件夹下创建testvalidate.jsp【错误信息显示到了新的页面】,内容如下:
<%--  Created by IntelliJ IDEA.  User: zhangli  Date: 2019/11/13  Time: 11:21  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %>    Title    
  • 在web文件夹下创建testvalidate.html【错误信息通过ajax回调函数显示到本页面】,内容如下:
    
Title
  • 在WEB-INF/page/文件夹下创建error.jsp,内容如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>    Title${error}
  • 启动tomcat,在浏览器中分别输入:
    以上就是springmvc中的数据校验。

转载地址:https://www.cnblogs.com/alichengxuyuan/p/12554619.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:07 数据绑定之格式化
下一篇:09 ControllerAdvice的使用

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月19日 15时06分27秒