springcloud工作笔记095---springcloud项目后端验证_hibernate validator后端校验字段_自己实现_快速开发

1. 在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码个人感觉有两个麻烦:

  • 验证代码繁琐,重复劳动
  • 方法内代码显得冗长
  • 每次要看哪些参数验证是否完整,需要去翻阅验证逻辑代码

hibernate validator(官方文档)提供了一套比较完善、便捷的验证实现方式。

spring-boot-starter-web包里面有hibernate-validator包,不需要引用hibernate validator依赖。

2.在modal类中,给字段添加上验证规则

package cn.gov.credream.model;

import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;

import java.util.Date;
import javax.persistence.*;

@Table(name = "test_tbl")
public class DeTest {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;


    /**
     * 法规类型
     */
    @NotBlank(message = "类型不能为空")
    @Column(name = "testtype")
    private String testtype;

    @Transient //添加的额外字段不会被mybatis解析但是可以把数据代入前台
    private String testTransient;

    /**
     * 附件
     */
    @Length(max=200,message = "最大只能输入200位长度")
    @Column(name = "testintro")
    private String testintro;

 
    /**
     * @return id
     */
    public Integer getId() {
        return id;
    }

  ....get  /set方法

}

3.另外还有其他的比如@Email等等,还可以根据正则表达式自动校验,具体需要的时候查一下

4.具体使用的时候在controller类中:

package cn.gov.credream.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.util.*;

/**
 */
@RestController
@RequestMapping("/api/v1/test/infor")
public class TestInforController {
  .....
//TestInfor 是需要验证的实体类,前面加上@Validated
//然后写上BindingResult ,验证后会把错误,自动的
//加入到BindingResult 中.

    @PostMapping("/add")
    public Result add(@Validated TestInfor deRepreseInfor , BindingResult result) {
        if(result.hasErrors()){
            System.out.println("验证进入,验证有出错!");
            //这里验证错误信息
            return ResultGenerator.genFailResult(ErrorUtils.getAllErrorMessages(result.getAllErrors()));
        }
......

5. BindingResult是hibernate validation内部提供个类

ErrorUtils是自己写的,就是做了个拼接工作



import org.springframework.validation.ObjectError;

import java.util.List;

public class ErrorUtils {

    public static String getAllErrorMessages(List errorList){
        String message = "";
        if(errorList==null&&errorList.size()==0){
            return message;
        }
        for(int i = 0;i

6.前台使用的时候:

 

你可能感兴趣的:(Spring,Cloud,系统安全专栏)