如何解决@NotBlank不生效的问题

解决@NotBlank不生效

在项目开发中,发现一个类中包含有另外一个类,这种包含关系的类上的@NotBlank校验不生效,后来发现需要在内部的类的域上加上@Valid注解,如下:

/**
     * 标签体系ID
     */
    @NotBlank(message = "00000002")
    @Length(max = 20, message = "00000005")
    private String systemId;

    /**
     * 条件模板id
     */
    private String templateId;

    /**
     * 条件模板代码
     */
    private String templateCode;

    /**
     * 条件模板名称
     */
    @NotBlank(message = "00001001")
    @Length(max = 20, message = "00001002")
    private String templateName;

    /**
     * 条件表达式
     */
    @NotBlank(message = "00001003")
    @Length(max = 200, message = "00001004")
    private String templateConditionExpr;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 条件模板字段数据
     */
    @Valid
    @NotEmpty(message = "00001005")
    private List<PotentialConColParam> conTemplatesCols;
/**
     * 标签代码
     */
    @NotBlank(message = "00001006")
    @Length(max = 64, message = "00001007")
    private String labelCode;

    /**
     * 条件名称
     */
    @NotBlank(message = "00001008")
    @Length(max = 20, message = "00001009")
    private String conditionName;

    /**
     * 操作符
     */
    @NotBlank(message = "00001010")
    @Length(max = 20, message = "00001011")
    private String operation;

    /**
     * 条件赋值
     */
    @NotBlank(message = "00001012")
    @Length(max = 20, message = "00001013")
    private String conditionValue;

@NotBlank @NotEmpty不生效,以及对象嵌套问题

问题1:

最近做一个新项目,写新接口时发现@NotBlank @NotEmpty不生效,@NotNull则生效,令人费解。通过搜索资料以及对项目依赖一步步排除发现项目中引入的jar包有问题,见红色标识出来的

删除以上3个jar,新增org.hibernate后问题解决

用法:

step1、Controller层接口入参处加@Validated注解(org.springframework.validation.annotation包的)

step2、入参对象的属性上加@NotBlank 或@NotEmpty 或 @NotNull --均来自于javax.validation.constraints包下, 三者区别可百度

问题2:

循环嵌套问题,入参对象bean中 属性也为javabean对象,也希望子对象中的属性能够被校验

用法: 在子对象属性上面加@Valid 注解即可

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

(0)

相关推荐

  • Springboot项目javax.validation使用方法详解

    javax.validation 是基于JSR-303标准开发出来的,使用注解方式实现,及其方便,但是这只是一个接口,没有具体实现. Hibernate-Validator是一个hibernate独立的包,可以直接引用,他实现了javax.validation同时有做了扩展,比较强大.SpringBoot在内部集成了hibernate-validation,可以直接使用. 常用注解: 代码 说明 @Null 被注解的元素必须为null @NotNull 被注解的元素必须不为null @Asser

  • @NotEmpty、@NotBlank、@NotNull的区别

    在网上搜索的内容,大致如下: 验证框中@NotEmpty.@NotBlank.@NotNull乍一看还是容易弄混的.主要使用情况记录一下: @NotEmpty 用在集合类上面 @NotBlank 用在String上面 @NotNull    用在基本类型上 只有简单的结果,但是再更具体一点的内容就搜不到了,所以去看了看源码,发现了如下的注释: 1. @NotEmpty 复制代码 代码如下: /** * Asserts that the annotated string, collection,

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

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

  • javax NotBlank和Email注解失效的解决

    javax NotBlank和Email注解失效 使用javax的NotBlan和Email注解, 结果报类似错误 no validator could be found for constraint 'javax.validation.constraints.notblank' 原来是由于javax只提供了注解的定义,未提供对应的处理器,一般使用hibernate提供的注解处理器. 但是hibernate未提供NotBlank和Email注解的处理器(但是hibernate自己定义的NotBl

  • 如何解决@NotBlank不生效的问题

    解决@NotBlank不生效 在项目开发中,发现一个类中包含有另外一个类,这种包含关系的类上的@NotBlank校验不生效,后来发现需要在内部的类的域上加上@Valid注解,如下: /** * 标签体系ID */ @NotBlank(message = "00000002") @Length(max = 20, message = "00000005") private String systemId; /** * 条件模板id */ private String

  • Vue项目中input框focus时不调出键盘问题的解决

    目录 input框focus时不调出键盘问题 自动获取input焦点(内含ios不能唤起键盘解决方法) 最开始的用法 如果想要解决ios不生效办法 input框focus时不调出键盘问题 在移动端,实现input框获得焦点的同时不会唤起手机键盘. 亲测有效!!! <input type="text" placeholder="收货地址" v-model="address3" @focus.prevent="showcountF&q

  • Disconf实现分布式配置管理的原理与设计

    目录 技术背景 功能特点与设计理念 功能特点 设计理念 详细设计 架构设计 流程设计 模块实现 注解式disconf实现 基于XML配置disconf实现 主备分配实现 COMPARISONS 技术背景 在一个分布式环境中,同类型的服务往往会部署很多实例.这些实例使用了一些配置,为了更好地维护这些配置就产生了配置管理服务.通过这个服务可以轻松地管理成千上百个服务实例的配置问题. 王阿晶提出了基于zooKeeper的配置信息存储方案的设计与实现[1], 它将所有配置存储在zookeeper上,这会

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

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

  • 解决Cent0S 6.7直接在/etc/resolv.conf文件下修改DNS地址重启不生效问题

    CentOS 6.7/Linux下设置IP地址 1:临时修改: 1.1:修改IP地址 # ifconfig eth0 192.168.2.104 1.2:修改网关地址 # route add default gw 192.168.2.1 dev eth0 1.3:修改DNS # echo "nameserver 192.168.2.1" >> /etc/resolv.conf         // 与主机的DNS服务器保持一致 这个时候就可以上网了,上网的IP地址为192.

  • 详解git中配置的.gitignore不生效的解决办法

    详解git中配置的.gitignore不生效的解决办法 前言: 通常我们希望放进仓库的代码保持纯净,即不要包含项目开发工具生成的文件,或者项目编译后的临时文件.但是,当我们使用git status查看工作区状态的时候,总会提示一些文件未被track.于是,我们想让git帮助我们忽略这些文件,不再提醒. 庆幸的是,git已经考虑到这点了.我们可以在项目的根目录下建立一个.gitignore的文件,该文件用来配置哪些文件或者目录不被track的.规则很简单,就在该文件中,写下你不想被track的文件

  • IOS设备上给body绑定click事件不生效的原因及解决办法

    事件背景: 最近在做一个移动端业务的时候碰到一个bug,在ios上对body绑定click事实现事件代理冒泡至某些元素上尽然不生效. 思考: 暂借助jquery展示下事件绑定代码,将所有标签含有data-tip属性的元素通过事件代理至body $('body').on('click','[data-tip]',function(e){ console.log($(this.).attr('data-tip')) }) 这样做在android和pc上都可以正常实现,但是在ios上面对部分标签尽然不

  • bootstrap折叠调用collapse()后data-parent不生效的快速解决办法

    今天做的项目,用到了bootstrap的折叠功能,这个功能需要只展开一个折叠框,点击一个就会自动隐藏另一个,初始按照API做了一下,发现一切运行正常,但是测试的同事提了一个bug,说切换到其他模块后再切换回来,发现原先展开的折叠框没有折叠起来--即恢复原样.于是又去修改代码,回来的时候对所有折叠框调用: .collapse('hide')方法. $(".love .collapse").collapse('hide'); 调用之后发现,点击连接苗,data-parent失效了,也就是可

  • MySQL修改my.cnf配置不生效的解决方法

    本文实例讲述了MySQL修改my.cnf配置不生效的解决方法.分享给大家供大家参考,具体如下: 一.问题: 修改了 my.cnf 配置文件后,却不生效,这是怎么回事? 二.原因: 我们注意到,这里只说了修改 my.cnf,并没有说清楚其绝对路径是哪个文件.也就是说,有可能修改的不是正确路径下的my.cnf文件. 在MySQL中,是允许存在多个 my.cnf 配置文件的,有的能对整个系统环境产生影响,例如:/etc/my.cnf.有的则只能影响个别用户,例如:~/.my.cnf. MySQL读取各

  • git使用.gitignore设置不生效或不起作用问题的解决方法

    偶然遇到的问题,记录如下: 通常我们在push项目时,会有些配置文件或本地文件不想上传到服务器上 这时候我们会通过设置.gitignore  文件 一般设置成这样: ################### *.com *.txt *.class *.dll *.exe *.7z *.gz *.iso *.jar *.rar *.tar *.zip *.log *.sql *.sqlite *.pyc *.excude *.bak config.* .idea .DS_Store* ehthumb

随机推荐