所有分类
  • 所有分类
  • 未分类

SpringBoot–@Validated的用法

简介

本文用示例说明SpringBoot的@Validated的用法。

代码结构

依赖

必须引入此依赖,否则校验会无效。而且@Validated是SpringBoot增强的依赖,所以必须引入上边这个依赖。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

 它里边依赖了hibernate validator,就是下边这个。

<dependency>
	<groupId>org.hibernate.validator</groupId>
	<artifactId>hibernate-validator</artifactId>
</dependency>

用法1:不分组

代码

Controller

package com.knife.example.business.user.without_group.controller;
 
import com.knife.example.business.user.without_group.bo.UserBO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;
 
@Api(tags = "不分组")
@RestController
@RequestMapping("validatedWithoutGroup")
public class ValidatedWithoutGroupController {
 
    @ApiOperation("正常用法")
    @PostMapping("normal")
    public UserBO normal(@Validated @RequestBody UserBO userBO) {
        return userBO;
    }
 
    @ApiOperation("获得BindingResult")
    @PostMapping("bindingResult")
    public UserBO bindingResult(@Validated UserBO userBO, BindingResult bindingResult) {
        if (bindingResult.hasErrors()){
            List<ObjectError> list = bindingResult.getAllErrors();
            for (ObjectError objectError : list) {
                System.out.println(objectError.getDefaultMessage());
            }
            //System.out.println(bindingResult.getFieldError().getDefaultMessage());
        }
 
        return userBO;
    }
 
}

BO

UserBO

package com.knife.example.business.user.without_group.bo;
 
import lombok.Data;
 
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
 
@Data
public class UserBO {
    @NotBlank(message = "名字不能为空")
    private String name;

    private Integer age;

    @NotBlank(message = "密码不能为空")
    private String password;

    @NotEmpty(message = "分数不能为空")
    private List<Integer> scoreArray;

    @Valid
    @NotNull(message = "账户不能为空")
    private AccountBO accountBO;

    @Valid
    @NotNull(message = "账户列表不能为空")
    private List<AccountBO> accountBOList;
}

AccountBO

package com.knife.example.business.user.without_group.bo;
 
import lombok.Data;
 
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

@Data
public class AccountBO {
    @NotNull(message = "账户ID不能为空")
    private Long id;

    @NotBlank(message = "电话号码不能为空")
    private String phoneNumber;

    private String[] emails;
}

测试

测试1:缺少字段

可以发现:和最外侧使用@Valid是一样的:所有位置的校验都是有效的,包括:顶层实体类、普通字段、数组字段、包装类字段、包装类列表字段。

后端结果:

2023-10-16 16:33:42.454 ERROR 25004 --- [nio-8080-exec-4] c.k.e.c.advice.GlobalExceptionAdvice     : 参数校验异常

org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public com.knife.example.business.user.without_group.bo.UserBO com.knife.example.business.user.without_group.controller.ValidatedWithoutGroupController.normal(com.knife.example.business.user.without_group.bo.UserBO) with 5 errors: [Field error in object 'userBO' on field 'scoreArray': rejected value [[]]; codes [NotEmpty.userBO.scoreArray,NotEmpty.scoreArray,NotEmpty.java.util.List,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.scoreArray,scoreArray]; arguments []; default message [scoreArray]]; default message [分数不能为空]] [Field error in object 'userBO' on field 'name': rejected value []; codes [NotBlank.userBO.name,NotBlank.name,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.name,name]; arguments []; default message [name]]; default message [名字不能为空]] [Field error in object 'userBO' on field 'accountBO.phoneNumber': rejected value []; codes [NotBlank.userBO.accountBO.phoneNumber,NotBlank.accountBO.phoneNumber,NotBlank.phoneNumber,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.accountBO.phoneNumber,accountBO.phoneNumber]; arguments []; default message [accountBO.phoneNumber]]; default message [电话号码不能为空]] [Field error in object 'userBO' on field 'password': rejected value []; codes [NotBlank.userBO.password,NotBlank.password,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.password,password]; arguments []; default message [password]]; default message [密码不能为空]] [Field error in object 'userBO' on field 'accountBOList[0].id': rejected value [null]; codes [NotNull.userBO.accountBOList[0].id,NotNull.userBO.accountBOList.id,NotNull.accountBOList[0].id,NotNull.accountBOList.id,NotNull.id,NotNull.java.lang.Long,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.accountBOList[0].id,accountBOList[0].id]; arguments []; default message [accountBOList[0].id]]; default message [账户ID不能为空]] 
	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:141) ~[spring-webmvc-5.3.13.jar:5.3.13]
	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121) ~[spring-web-5.3.13.jar:5.3.13]
	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179) ~[spring-web-5.3.13.jar:5.3.13]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146) ~[spring-web-5.3.13.jar:5.3.13]
	//... 省略
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.3.13.jar:5.3.13]
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) [spring-webmvc-5.3.13.jar:5.3.13]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) [tomcat-embed-core-9.0.55.jar:4.0.FR]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) [spring-webmvc-5.3.13.jar:5.3.13]

请求体:

{
  "accountBO": {
    "emails": [],
    "id": 2,
    "phoneNumber": ""
  },
  "accountBOList": [
    {
      "emails": [],
      "id": null,
      "phoneNumber": "12345"
    }
  ],
  "age": 0,
  "name": "",
  "password": "",
  "scoreArray": []
}

测试2:不缺少字段

可以看到,接口没有报错。

请求体:

{
  "accountBO": {
    "emails": ["123@qq.com"],
    "id": 2,
    "phoneNumber": "123"
  },
  "accountBOList": [
    {
      "emails": ["11@qq.com"],
      "id": 3,
      "phoneNumber": "12345"
    }
  ],
  "age": 0,
  "name": "Tony",
  "password": "abbb",
  "scoreArray": [95,98]
}

测试3: 获得BindingResult

可以发现,正常返回。结果和最外层使用@Valid是一样的。

后端结果:

分数不能为空
账户ID不能为空
电话号码不能为空
名字不能为空
密码不能为空

用法2:分组

Controller

package com.knife.example.business.user.with_group.controller;

import com.knife.example.business.user.with_group.bo.UserBO;
import com.knife.example.business.user.with_group.group.IGroupA;
import com.knife.example.business.user.with_group.group.IGroupAll;
import com.knife.example.business.user.with_group.group.IGroupB;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

@Api(tags = "分组")
@RestController
@RequestMapping("validatedWithGroup")
public class ValidatedWithGroupController {
    @ApiOperation("使用组:GroupA")
    @PostMapping("groupA")
    public UserBO groupA(@Validated({IGroupA.class}) @RequestBody UserBO userBO) {
        return userBO;
    }
 
    @ApiOperation("使用组:GroupB")
    @PostMapping("groupB")
    public UserBO groupB(@Validated({IGroupB.class}) @RequestBody UserBO userBO) {
        return userBO;
    }
 
    @ApiOperation("使用组:GroupA和GroupB")
    @PostMapping("groupAAndGroupB")
    public UserBO groupAAndGroupB(@Validated({IGroupA.class, IGroupB.class}) @RequestBody UserBO userBO) {
        return userBO;
    }
 
    @ApiOperation("使用组:GroupAll")
    @PostMapping("groupAll")
    public UserBO groupAll(@Validated({IGroupAll.class}) @RequestBody UserBO userBO) {
        return userBO;
    }
 
}

BO

UserBO

package com.knife.example.business.user.with_group.bo;
 
import com.knife.example.business.user.with_group.group.IGroupA;
import com.knife.example.business.user.with_group.group.IGroupB;
import lombok.Data;
 
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
 
@Data
public class UserBO {
    @NotBlank(message = "名字不能为空")
    private String name;

    @NotNull(message = "年龄不能为空", groups = {IGroupA.class})
    private Integer age;

    @NotEmpty(message = "密码不能为空", groups = {IGroupB.class})
    private String password;

    @NotEmpty(message = "分数不能为空", groups = {IGroupA.class, IGroupB.class})
    private List<Integer> scoreArray;

    @Valid
    @NotNull(message = "账户不能为空")
    private AccountBO accountBO;

    @Valid
    @NotEmpty(message = "账户列表不能为空")
    private List<AccountBO> accountBOList;
}

AccountBO

package com.knife.example.business.user.with_group.bo;
 
import com.knife.example.business.user.with_group.group.IGroupA;
import com.knife.example.business.user.with_group.group.IGroupB;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

@Data
public class AccountBO {
    @NotNull(message = "账户ID不能为空", groups = {IGroupA.class} )
    private Long id;

    @NotBlank(message = "电话号码不能为空", groups = {IGroupB.class})
    private String phoneNumber;

    private String[] emails;
}

Group

IGroupA接口

package com.knife.example.business.user.with_group.group;
 
public interface IGroupA {
}

IGroupB接口 

package com.knife.example.business.user.with_group.group;
 
public interface IGroupB {
}

 IGroupAll接口 

package com.knife.example.business.user.with_group.group;
 
import javax.validation.GroupSequence;
import javax.validation.groups.Default;
 
@GroupSequence({Default.class, IGroupA.class, IGroupB.class})
public interface IGroupAll {
}

测试

下载源码

此隐藏内容仅限VIP查看升级VIP

测试1:缺参数请求GroupA

可以发现:GroupA的校验生效了(列表形式的包装类字段也生效了)。

后端结果:

2023-10-16 16:53:28.434 ERROR 21312 --- [nio-8080-exec-4] c.k.e.c.advice.GlobalExceptionAdvice     : 参数校验异常

org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public com.knife.example.business.user.with_group.bo.UserBO com.knife.example.business.user.with_group.controller.ValidatedWithGroupController.groupA(com.knife.example.business.user.with_group.bo.UserBO) with 2 errors: [Field error in object 'userBO' on field 'accountBOList[0].id': rejected value [null]; codes [NotNull.userBO.accountBOList[0].id,NotNull.userBO.accountBOList.id,NotNull.accountBOList[0].id,NotNull.accountBOList.id,NotNull.id,NotNull.java.lang.Long,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.accountBOList[0].id,accountBOList[0].id]; arguments []; default message [accountBOList[0].id]]; default message [账户ID不能为空]] [Field error in object 'userBO' on field 'scoreArray': rejected value [[]]; codes [NotEmpty.userBO.scoreArray,NotEmpty.scoreArray,NotEmpty.java.util.List,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.scoreArray,scoreArray]; arguments []; default message [scoreArray]]; default message [分数不能为空]] 
	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:141) ~[spring-webmvc-5.3.13.jar:5.3.13]
	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121) ~[spring-web-5.3.13.jar:5.3.13]
	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179) ~[spring-web-5.3.13.jar:5.3.13]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146) ~[spring-web-5.3.13.jar:5.3.13]
        // ...省略	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.13.jar:5.3.13]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.3.13.jar:5.3.13]
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) [spring-webmvc-5.3.13.jar:5.3.13]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) [tomcat-embed-core-9.0.55.jar:4.0.FR]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) [spring-webmvc-5.3.13.jar:5.3.13]

请求体:

{
  "accountBO": {
    "emails": [],
    "id": 2,
    "phoneNumber": ""
  },
  "accountBOList": [
    {
      "emails": [],
      "id": null,
      "phoneNumber": "12345"
    }
  ],
  "age": 0,
  "name": "",
  "password": "",
  "scoreArray": []
}

测试2:缺参数请求groupB

可以发现:GroupB的校验生效了(列表形式的包装类字段也生效了)。

后端结果:

2023-10-16 16:56:01.352 ERROR 21312 --- [nio-8080-exec-6] c.k.e.c.advice.GlobalExceptionAdvice     : 参数校验异常

org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public com.knife.example.business.user.with_group.bo.UserBO com.knife.example.business.user.with_group.controller.ValidatedWithGroupController.groupB(com.knife.example.business.user.with_group.bo.UserBO) with 3 errors: [Field error in object 'userBO' on field 'scoreArray': rejected value [[]]; codes [NotEmpty.userBO.scoreArray,NotEmpty.scoreArray,NotEmpty.java.util.List,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.scoreArray,scoreArray]; arguments []; default message [scoreArray]]; default message [分数不能为空]] [Field error in object 'userBO' on field 'password': rejected value []; codes [NotEmpty.userBO.password,NotEmpty.password,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.password,password]; arguments []; default message [password]]; default message [密码不能为空]] [Field error in object 'userBO' on field 'accountBO.phoneNumber': rejected value []; codes [NotBlank.userBO.accountBO.phoneNumber,NotBlank.accountBO.phoneNumber,NotBlank.phoneNumber,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.accountBO.phoneNumber,accountBO.phoneNumber]; arguments []; default message [accountBO.phoneNumber]]; default message [电话号码不能为空]] 
	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:141) ~[spring-webmvc-5.3.13.jar:5.3.13]
	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121) ~[spring-web-5.3.13.jar:5.3.13]
	// ...省略
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.3.13.jar:5.3.13]
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) [spring-webmvc-5.3.13.jar:5.3.13]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) [tomcat-embed-core-9.0.55.jar:4.0.FR]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) [spring-webmvc-5.3.13.jar:5.3.13]

测试3:缺参数请求GroupA和GroupB

可以发现:GroupA和GroupB的校验生效了(列表形式的包装类字段也生效了)。

后端结果:

2023-10-16 16:58:16.515 ERROR 21312 --- [nio-8080-exec-8] c.k.e.c.advice.GlobalExceptionAdvice     : 参数校验异常

org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public com.knife.example.business.user.with_group.bo.UserBO com.knife.example.business.user.with_group.controller.ValidatedWithGroupController.groupAAndGroupB(com.knife.example.business.user.with_group.bo.UserBO) with 4 errors: [Field error in object 'userBO' on field 'scoreArray': rejected value [[]]; codes [NotEmpty.userBO.scoreArray,NotEmpty.scoreArray,NotEmpty.java.util.List,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.scoreArray,scoreArray]; arguments []; default message [scoreArray]]; default message [分数不能为空]] [Field error in object 'userBO' on field 'accountBO.phoneNumber': rejected value []; codes [NotBlank.userBO.accountBO.phoneNumber,NotBlank.accountBO.phoneNumber,NotBlank.phoneNumber,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.accountBO.phoneNumber,accountBO.phoneNumber]; arguments []; default message [accountBO.phoneNumber]]; default message [电话号码不能为空]] [Field error in object 'userBO' on field 'password': rejected value []; codes [NotEmpty.userBO.password,NotEmpty.password,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.password,password]; arguments []; default message [password]]; default message [密码不能为空]] [Field error in object 'userBO' on field 'accountBOList[0].id': rejected value [null]; codes [NotNull.userBO.accountBOList[0].id,NotNull.userBO.accountBOList.id,NotNull.accountBOList[0].id,NotNull.accountBOList.id,NotNull.id,NotNull.java.lang.Long,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.accountBOList[0].id,accountBOList[0].id]; arguments []; default message [accountBOList[0].id]]; default message [账户ID不能为空]] 
	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:141) ~[spring-webmvc-5.3.13.jar:5.3.13]
	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121) ~[spring-web-5.3.13.jar:5.3.13]
       // ...省略	org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.13.jar:5.3.13]
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.3.13.jar:5.3.13]
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) [spring-webmvc-5.3.13.jar:5.3.13]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) [tomcat-embed-core-9.0.55.jar:4.0.FR]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) [spring-webmvc-5.3.13.jar:5.3.13]

请求体:

{
  "accountBO": {
    "emails": [],
    "id": 2,
    "phoneNumber": ""
  },
  "accountBOList": [
    {
      "emails": [],
      "id": null,
      "phoneNumber": "12345"
    }
  ],
  "age": 0,
  "name": "",
  "password": "",
  "scoreArray": []
}

测试4:缺参数请求GroupAll

可以看到:走的是除了IGroupA和IGroupB注解的字段的逻辑。

后端结果:

2023-10-16 17:01:23.177 ERROR 21312 --- [io-8080-exec-10] c.k.e.c.advice.GlobalExceptionAdvice     : 参数校验异常

org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public com.knife.example.business.user.with_group.bo.UserBO com.knife.example.business.user.with_group.controller.ValidatedWithGroupController.groupAll(com.knife.example.business.user.with_group.bo.UserBO): [Field error in object 'userBO' on field 'name': rejected value []; codes [NotBlank.userBO.name,NotBlank.name,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userBO.name,name]; arguments []; default message [name]]; default message [名字不能为空]] 
	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:141) ~[spring-webmvc-5.3.13.jar:5.3.13]
	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121) ~[spring-web-5.3.13.jar:5.3.13]
        // ... 省略	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.3.13.jar:5.3.13]
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) [spring-webmvc-5.3.13.jar:5.3.13]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) [tomcat-embed-core-9.0.55.jar:4.0.FR]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) [spring-webmvc-5.3.13.jar:5.3.13]

将错误提示出来

本文将参数非法这种异常统一提示到了前端,用了全局异常处理(捕获MethodArgumentNotValidException异常)。如果不用异常处理,后端打印信息会很多:

2023-10-15 19:45:17.549  WARN 1920 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public com.example.demo.business.valid.entity.User com.example.demo.business.valid.controller.ValidController.normal(com.example.demo.business.valid.entity.User) with 5 errors: [Field error in object 'user' on field 'account.phoneNumber': rejected value []; codes [NotBlank.user.account.phoneNumber,NotBlank.account.phoneNumber,NotBlank.phoneNumber,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.account.phoneNumber,account.phoneNumber]; arguments []; default message [account.phoneNumber]]; default message [电话号码不能为空]] [Field error in object 'user' on field 'name': rejected value []; codes [NotBlank.user.name,NotBlank.name,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.name,name]; arguments []; default message [name]]; default message [名字不能为空]] [Field error in object 'user' on field 'password': rejected value []; codes [NotBlank.user.password,NotBlank.password,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.password,password]; arguments []; default message [password]]; default message [密码不能为空]] [Field error in object 'user' on field 'scoreArray': rejected value [[]]; codes [NotEmpty.user.scoreArray,NotEmpty.scoreArray,NotEmpty.java.util.List,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.scoreArray,scoreArray]; arguments []; default message [scoreArray]]; default message [分数不能为空]] [Field error in object 'user' on field 'accountList[0].id': rejected value [null]; codes [NotNull.user.accountList[0].id,NotNull.user.accountList.id,NotNull.accountList[0].id,NotNull.accountList.id,NotNull.id,NotNull.java.lang.Long,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.accountList[0].id,accountList[0].id]; arguments []; default message [accountList[0].id]]; default message [账户ID不能为空]] ]

下载源码

此隐藏内容仅限VIP查看升级VIP
0

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录