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

栏目: 软件资讯 · 发布时间: 3年前

内容简介:Jboot 是一个基于 JFinal、JFinal-Undertow、Dubbo、Seata、Sentinel、ShardingSphere、Nacos 等开发的微服务框架,帮助开发者降低微服务开发门槛。同时完美支持在 idea、eclipse 下多 maven 模块,对 java 代码、...

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);
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Search User Interfaces

Search User Interfaces

Marti A. Hearst / Cambridge University Press / 2009-9-21 / USD 59.00

搜索引擎的本质是帮助用户更快、更方便、更有效地查找与获取所需信息。在不断改进搜索算法和提升性能(以技术为中心)的同时,关注用户的信息需求、搜寻行为、界面设计与交互模式是以用户为中心的一条并行发展思路。创新的搜索界面及其配套的交互机制对一项搜索服务的成功来说是至关重要的。Marti Hearst教授带来的这本新作《Search User Interfaces》即是后一条思路的研究成果,将信息检索与人......一起来看看 《Search User Interfaces》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具