Java参数校验@Valid中@Length和@Size的用法和区别

这篇具有很好参考价值的文章主要介绍了Java参数校验@Valid中@Length和@Size的用法和区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Spring框架中,@Length和@Size都是用于参数长度校验的注解,但它们之间存在一些关键的区别:

适用范围:

  • @Length 是Hibernate Validator提供的一个注解,它用于校验字符串的长度。
  • @Size 也是Hibernate Validator提供的注解,但它可以用于多种数据类型,不仅仅是字符串。对于字符串,它可以校验长度;对于集合和数组,它可以校验大小。

使用场景

  • 校验字符串的长度,应该使用 @Length。
  • 校验字符串的长度,但同时也想确保它不为空,那么应该使用 @Size。

参数:

  • @Length 接受两个参数:一个是最小长度,一个是最大长度。
  • @Size 也接受两个参数:一个是最小值(可以为空),一个是最大值(可以为空)。这意味着你可 以为最小值或最大值设置一个限制,或者两者都设置。

优先级:

在某些情况下,如果你同时使用了 @Length 和 @Size 注解,并且它们的约束条件都满足,那么 @Size 的约束条件会优先生效。文章来源地址https://www.toymoban.com/news/detail-852067.html

使用建议:

  • 如果只需要校验字符串的长度,并且不关心是否为空,那么使用 @Length。
  • 如果既需要校验字符串的长度也需要校验是否为空,那么使用 @Size。

举例:

public class DemoDto {  
    @Length(min = 5, max = 10)  
    private String myString;  
	@Size(min = 5, max = 10, message = "姓名长度范围5-10个字符")
	private String name;
    // ... 其他字段和方法  
}

到了这里,关于Java参数校验@Valid中@Length和@Size的用法和区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • matlab 获取矩阵大小、行数、列数、元素总个数——size()/length()/numel()

    size:获取数组的行数和列数 s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数。 [r,c]=size(A),当有两个输出参数时,size函数将数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量。 如果在s

    2024年02月11日
    浏览(42)
  • C++求字符串长度————sizeof()、size()、strlen()以及length()详解

    一、区分sizeof()和strlen() 首先, sizeof() 【操作数所占空间的字节数大小】是一种c中的 基本运算符 。(是操作符,并不是函数)可以以类型、指针、数组和函数等作为参数。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此 sizeof() 不

    2024年02月02日
    浏览(55)
  • @Pattern、@NotNUll、@Length等校验注解的使用

    @ NotNull 注解来标记 MyObject 类的 property 属性不能为空。通过 Validation.buildDefaultValidatorFactory() 创建验证器工厂,然后使用 factory.getValidator() 获取验证器实例。然后,我们创建了一个 MyObject 实例,并将其传递给 validator.validate() 方法进行验证。验证结果存储在 SetConstraintViolationO

    2024年02月15日
    浏览(42)
  • java如何优雅的实现参数非空校验,快速实现参数非空校验,使用@valid实现参数非空校验

    在java项目接口中,有些必传参数需要进行非空校验,如果参数过多,代码会繁杂且冗余,如何优雅的对参数进行非空校验,下面是实现流程 用实体类接收参数,使用非空注解编辑参数内容 使用 @Valid 注解对参数进行拦截,整体进行非空校验 如果是SpringBoot项目,引入web开发包

    2024年02月08日
    浏览(48)
  • Java代码瘦身,巧用 @Valid,@Validated 的分组校验和嵌套检验,实现高阶参数校验操作

            在 JavaEE 项目中, RestFull 层接收参数首先要对一些字段的格式进行校验,以防止所有查询都落到数据库,这也是一种合理的限流手段。以前基本上都是用 if...else...,这样的代码太啰嗦,除了使用策略模式进行优化,今天介绍一下校验注解@Valid,@Validated和@PathVariable,

    2024年02月04日
    浏览(47)
  • ​java.nio.charset.MalformedInputException: Input length=2​

    SpringBoot启动时报错:​java.nio.charset.MalformedInputException: Input length=2​ 报错原因: 项目编码问题,必须统一编码,要么GBK,要么UTF-8 解决办法: 统一编码即可 统一编码为UTF-8 重启即可 

    2024年02月17日
    浏览(36)
  • java.nio.charset.MalformedInputException: Input length = 1

    post请求接收数据时,由于对接方发送过来的数据量过大,经过nginx时,被Gzip进行数据流压缩,导致使用InputStream 流读取body数据抛出上述异常 配置拦截器 对指定的路径进行拦截器body进行Gzip解压处理 解压 解压gzip

    2024年02月10日
    浏览(31)
  • YAMLException: java.nio.charset.MalformedInputException: Input length = 1

    springboot项目启动的时候提示这个错误:YAMLException: java.nio.charset.MalformedInputException: Input length = 1 根据异常信息提示,是YAML文件有问题。 原因是yml配置文件的编码有问题。 需要修改项目的编码格式,一般统一为UTF-8。 或者搜索“encoding”,把能改的都改一下。  统一完项目编

    2024年02月13日
    浏览(32)
  • @Valid、@Validated参数校验详解

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M6CfNsNC-1687851467867)(images/20200913110853722.png)] 说明:若不做异常处理,@Validated注解的默认异常消息如下(示例): 因此我们在这里做了一个全局的异常处理类,用于处理参数校验失败后抛出的异常,同

    2024年02月11日
    浏览(41)
  • SpringBoot参数校验@Validated、@Valid

    在实际开发中,前端校验并不安全,任何人都可以通过接口来调用我们的服务,就算加了一层token的校验,有心人总会转空子,来传各式各样错误的参数,如果后端不校验,导致数据库数据混乱、特别是关于金额的数据,可能一个接口把公司都给干倒了 0、返回类(可以不用看

    2024年01月23日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包