SpringMVC @NotNull校验不生效的解决方案

目录
  • SpringMVC @NotNull校验不生效
    • 加了两个依赖问题解决
  • @NotNull注解失效原因之一
    • Lombok判断注解怎么使用,总结下来为

SpringMVC @NotNull校验不生效

是不是少包了。

@NotEmpty也找不到。

加了两个依赖问题解决

    <dependency>
      <groupId>javax.validation</groupId>
      <artifactId>validation-api</artifactId>
      <version>2.0.1.Final</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate.validator</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>6.0.7.Final</version>
    </dependency>

@NotNull注解失效原因之一

给String类型加上@NotNull注解时,只有传入的参数为空时才会报异常,当传入的为空字符串时并不会报异常,就会出现报异常的现象

传参为空指的是该参数就没有传,为空字符串指的是有该参数但是是双引号""

Lombok判断注解怎么使用,总结下来为

  • @NotEmpty 用在集合类上
  • @NotBlank 用在String上
  • @NotNull 用在基本类型上

最后最重要的是,在接口参数前加注解'@Validated'

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 由@NotNull注解引出的关于Java空指针的控制

    Java 小技巧和在java应用避免NullPonintException的最佳方法 在java应用程序中,一个NullPonintException(空指针异常)是最好解决(问题)的方法.同时,空指针也是写健壮的顺畅运行的代码的关键."预防好过治疗"这句话也同样适用于令人不爽的NullPonintException.通过应用防御性的编码技术和在遵守多个部分之间的约定,你可以再很大程度上避免NullPointException.下面的这些java小技巧可以最小化像!=null这种检查的

  • 一次踩坑记录 @valid注解不生效 排查过程

    一.背景 在进行一次Controller层单测时,方法参数违反Validation约束,发现却没有抛出预期的[违反约束]异常. 方法参数上的@Valid注解不生效?? 但是以Tomcatweb容器方式启动,请求该API,@Valid注解却生效了,甚是怪异. 代码如下: @RestController @RequestMapping("/api/user/") public class UserController @RequestMapping(value = ""

  • spring 注解验证@NotNull等使用方法

    本文介绍了spring 注解验证@NotNull等使用方法,分享给大家,具体如下: 常用标签 @Null  被注释的元素必须为null @NotNull  被注释的元素不能为null @AssertTrue  被注释的元素必须为true @AssertFalse  被注释的元素必须为false @Min(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @DecimalMin(value)

  • Spring @Transactional注解失效解决方案

    这篇文章主要介绍了Spring @Transactional注解失效解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚.后来终于找到了原因. 如果你也出现了这种情况,可以从下面开始排查. 一.特性 先来了解一下@Transactional注解事务的特性吧,可以更好排查问题 1.service类标签(一般不建议在接口上)上添加@Transactional,

  • SpringMVC @NotNull校验不生效的解决方案

    目录 SpringMVC @NotNull校验不生效 加了两个依赖问题解决 @NotNull注解失效原因之一 Lombok判断注解怎么使用,总结下来为 SpringMVC @NotNull校验不生效 是不是少包了. @NotEmpty也找不到. 加了两个依赖问题解决 <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> &l

  • SpringMVC 数据校验方法(必看篇)

    数据校验在web应用里是非常重要的功能,尤其是在表单输入中.在这里采用Hibernate-Vapdator进行校验,该方法实现了JSR-303验证框架支持注解风格的验证. 一.导入jar包 若要实现数据校验功能,需要导入必要的jar包,主要包括以下几个: classmate-1.3.1.jar hibernate-vapdator-5.4.1.Final.jar hibernate-vapdator-annotation-processor-5.4.1.Final.jar hibernate-v

  • SpringMVC 数据校验实例解析

    这篇文章主要介绍了SpringMVC 数据校验实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.注解方式 二.示例 Spring MVC本身没有数据校验的功能,它使用Hibernate的校验框架来完成. 1.导入pom节点 <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator --> <dependency> <group

  • 解决get请求入参@NotNull验证不生效问题

    目录 get请求@NotNull验证不生效 解决办法 使用@NotEmpty,@NotBlank,@NotNull及@Valid注解校验请求参数 这里列举一下常用的注解 当校验不同过时,会返回对应的message描述 CreateUserRequest 实体类并添加校验注解 get请求@NotNull验证不生效 解决办法 在该方法的controller类上加@Validated 验证信息生效了 使用@NotEmpty,@NotBlank,@NotNull及@Valid注解校验请求参数 @NotE

  • maven依赖版本没有按照最短路径原则生效的解决方案

    女朋友他们项目用了 spring-boot,以 spring-boot-parent 作为 parent: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.9</version> </parent> 女朋友最近想用 elast

  • java开发之基于Validator接口的SpringMVC数据校验方式

    Spring MVC 提供了两种数据校验的方式: 1.基于 Validator 接口. 2.使用 Annotation JSR - 303 标准进行校验. 基于 Validator 接口的⽅式需要自定义 Validator 验证器,每⼀条数据的验证规则需要开发者⼿动完成, 使⽤ Annotation JSR - 303 标准则不需要⾃定义验证器,通过注解的方式可以直接在实体类中添加每个属性的验证规则,这种方式更加方便,实际开发中推荐使用. 1.定义实体类Account package entit

  • 关于keep-alive路由多级嵌套不生效的解决方案

    目录 问题 定位问题 解决方案 额外的问题及题解 问题 发现了一个问题,多级嵌套的路由缓存页面没有生效.网上其实有一些是把路由拍平,然后再去处理菜单,但是我觉得还不如从根源上去解决这个问题.顺带了解一下keep-alive的工作原理. 实际就是根据组件的名称,如果即将渲染的组件名称命中存在缓存数组,那么直接取缓存里的组件进行渲染.同时,这个命中缓存是带有父子组件关联关系的 以下会根据本图做讲解 定位问题 keep-alive实际就是根据组件的名称,如果即将渲染的组件名称命中存在缓存数组,那么直接

  • MyBatis中PageHelper不生效的解决方案

    MyBatis中PageHelper不生效 今天使用pageHelper,发现设置了PageHelper.startPage(page, pageSize);pageSize设置为10,但是结果并没有分页,查处了全部的数据: 问题解决: 原因是mybatis的依赖版本问题,之前配置的是1.0.0版本,这个版本不支持分页拦截 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>

  • docker swarm外部验证负载均衡时不生效的解决方案

    问题描述 我在本地创建了3个装了centos7的虚拟机, 并初始化了swarm集群, 即1个manager节点, 2个worker节点; 三台机子的ip分别是 192.168.124.8 - (manager节点), 192.168.124.9 - (worker节点), 192.168.124.10 - (worker节点) [root@localhost ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENG

  • Jackson反序列化@JsonFormat 不生效的解决方案

    今天在线上发现一个问题,在使用Jackson进行时间的反序列化时,配置的 @JsonFormat 没有生效 查看源码发现,Jackson在反序列化时间时,会判断json字段值类型,如下: 由于在我们服务里,前端传时间值到后端时采用了时间戳的方式,json值被判断为数字类型,所以Jackson在反序列化时直接简单粗暴的方式处理,将时间戳转换为Date类型: 为了能够按照正确的格式解析时间,抹去后面的时间点,精确到日,只好自定义一个时间解析器.自定义的时间解析器很好实现,网上已经有很多实例代码,只需

随机推荐