SpringBoot与Hibernate-validate校验整合

介绍

本文通过一个新增功能,描述SpringBoot、Hibernate-validate与Thymeleaf整合方法

1、在请求对象中添加校验注解

在请求对象UserReq中直接为各字段添加判断注解即可,比如判空校验、长度校验、格式校验等(具体判断方式这里就不一一列举了)

package com.example.demo.model;

import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Email;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;

@Data
public class UserReq {

    @NotBlank(message = "用户名必填")
    @Length(min = 6,max = 15,message = "用户名长度为6-15位")
    private String username;

    @NotBlank(message = "密码必填")
    private String password;

    @Min(value = 18,message = "年龄不能小于18岁")
    private int age;

    @Email(message = "邮箱格式不合法")
    private String email;
}

2、在控制器中开启校验模式

这里需注意两点,第一,在UserReq对象前面加上@Valid注解即开启校验模式。第二,使用@ModelAttribute("validTip")注解指定校验信息取值方式,validTip是自定义的,这个在html中获取校验信息时会用到。

package com.example.demo.controller;

import com.example.demo.model.UserReq;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.validation.Valid;

@Controller
@Slf4j
public class UserController {


    /**
     * 使用@ModelAttribute("validTip")指定校验失败提示信息key为validTip
     * @param req
     * @return
     */
    @RequestMapping("/addUser")
    public String showPage(@ModelAttribute("validTip") UserReq req){
        return "/user/add";
    }

    /**
     * Valid 注解示开启数据校验
     * BindingResult 返回校验的结果
     **/
    @RequestMapping("/save")
    public String saveUser(@ModelAttribute("validTip") @Valid UserReq req, BindingResult result){
        //如果校验不通过,返回原界面
        if(result.hasErrors()){
            return "/user/add";
        }
        log.info(" valid success");
        return "success";
    }

}

3、视图模板回显提示信息

在templates目录下创建user文件夹,再新建add.html模板。可以看到,我们通过th:errors="${validTip.username}方式获取校验提示信息,validTip是我们之前在控制方法中指定的,username为对应字段名。

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form th:action="@{/save}" method="post">
    姓名:<input type="text" name="username"/><font color="red" th:errors="${validTip.username}"></font><br/>
    密码:<input type="password" name="password" /><font color="red" th:errors="${validTip.password}"></font><br/>
    年龄:<input type="text" name="age" /><font color="red" th:errors="${validTip.age}"></font><br/>
    邮箱:<input type="text" name="email" /><font color="red" th:errors="${validTip.email}"></font><br/>
    <input type="submit" value="提交"/> </form>
</body>
</html>

4、效果查看

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值