Jboot v3.7.5 发布,全网最优雅的数据验证方式

Jboot 是一个基于 JFinal、JFinal-Undertow、Dubbo、Seata、Sentinel、ShardingSphere、Nacos 等开发的微服务框架,帮助开发者降低微服务开发门槛。同时完美支持在 idea、eclipse 下多 maven 模块,对 java 代码、html、css、js 等资源文件进行热加载。爽爽开发,快乐生活。

到目前为止,Jboot 已经开源超过了 4 年的时间,迭代了 160+ 个版本,已经被超过 1000+ 公司在使用,其中包含了多个知名的上市公司。

Jboot V3.7.5  增强 Jboot  的验证方式,在 Jboot 之前的 @EmptyValidate、@RegexValidate 等基础上,进一步基于 JSR 303 – Bean Validation 简化了验证方式,相比 Spring 更加优雅简单。

@NotNull 验证

在 Controller (或 Service 等)中,我们可以直接通过 @NotNull 注解给 Controller 添加,例如:

 public void test(@NotNull String para) {
        renderText("test6");
    }

可能你说,在参数中添加 @NotNull 在 Spring 也支持呀,但是如果使用 @Size 等验证,Spring 是无法直接给参数添加的,比如:

 public void test(@Size(min=2,max=10) String para) {
        renderText("test6");
    }

这个要做要求前端传入的 para 参数的长度必须是在 2 ~ 10 直接。

@Size 验证

@Size 验证,不仅仅可以验证 String 数据的长度,也可以验证 int long 等数据类型的值的大小范围。比如:

 public void test(@Size(min=2,max=10) int value) {
        renderText("test6");
    }

这个要求 value 的值必须在 2 ~ 10 直接。

当然,我们还可以使用 @Size 来验证 Map/List/数组的长度,比如配合 @JsonBody 来接收前端传入的值:

public void list(@Size(min=2,max=10) @JsonBody() List<MyBean> list) {        
      System.out.println("list--->" + list);        
      renderText("ok");
  }

要求前度传入的 MyBean Json 数组的长度必须是在 2~10 之间。

@NotEmpty 验证

@NotEmpty 不仅仅可以验证 String 类型不能为 null 和 空字符串,也可以验证 Map、List、数组等不能为空,比如:

public void list(@NotEmpty() @JsonBody() List<MyBean> list) {        
      System.out.println("list--->" + list);        
      renderText("ok");
  }

要求前端掺入的 MyBean Json 数组必须有值。

@Valid 验证

@Valid 是针对整个 Java Bean 验证,也可以对 JFinal 的 Model 进行验证。的 MyBean Json 数

比如 MyBean 定义如下:

public class MyBean {
    private String id;  
 
    @NotBlank(message = "密码不能为空")
    private String password;

    @Size(min=0,max=2,message = "性别的值只能是 0 1 2")
    private int sex;

    @Min(value = 18,message = "未成年禁止入内")  
    private Integer age; 
}

 在 Controller 或者 Service 中,如下代码可以直接对 MyBean 进行验证:

 public void test(@Valid() MyBean bean) {
        renderText("test6");
    }

如果 MyBean 是一个 JFinal 的 Model,我们只需要在 getter 方法添加注解即可。

除了以上的基本示例以外,Jboot 的验证还支持了更多的验证:

注解 说明
@NotNull 限制必须不为null
@DecimalMax(value) 限制必须为一个不大于指定值的数字
@DecimalMin(value) 限制必须为一个不小于指定值的数字
@Digits(integer,fraction) 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
@Max(value) 限制必须为一个不大于指定值的数字
@Min(value) 限制必须为一个不小于指定值的数字
@Pattern(value) 限制必须符合指定的正则表达式
@Size(max,min) 限制字符长度必须在min到max之间
@NotEmpty 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@NotBlank 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
@Email 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

在使用在写验证注解中,我们不仅仅在 Controller 里进行对 http 请求数据进行验证,一样可以在 Service (provider)中对传入的参数进行验证。

在前端中,如果出现验证失败,会返回如下的 Json 内容(可以通过配置 ErrorRender 来修改掉如下的内容):

{
    "throwable": "io.jboot.components.valid.ValidException: 必须小于或等于200",
    "errorMessage": "age max value is 200, but current value is 1001 at method: io.jboot.test.validate.ValidateController.test17(int)",
    "errorCode": 400,
    "state": "fail",
    "message": "必须小于或等于200"
}

在 Service 中验证失败会向外抛出 ValidException 异常。

当然还有更多的功能此处不再一一举例,欢迎给位小伙伴使用 Jboot 开发的时候爽起来。

开发文档:

https://jbootprojects.gitee.io/docs/

同时,Jboot 官方也推出了企业级开发框架 JbootAdmin,详情 https://jbootprojects.gitee.io/docs/jbootadmin/

maven 依赖:

<dependency>
    <groupId>io.jboot</groupId>
    <artifactId>jboot</artifactId>
    <version>3.7.5</version>
</dependency>

Hello World:

@RequestMapping("/")
public class HelloworldController extends JbootController {

    public void index(){
        renderText("hello world");
    }

    public static void main(String[] args){
        JbootApplication.run(args);
    }
}
优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/124287/jboot-3-7-5-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。