Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Boot@RestController动态接受不同结构bean对象的@RequestBody并验证请求_Java_Rest_Spring Boot - Fatal编程技术网

Java Spring Boot@RestController动态接受不同结构bean对象的@RequestBody并验证请求

Java Spring Boot@RestController动态接受不同结构bean对象的@RequestBody并验证请求,java,rest,spring-boot,Java,Rest,Spring Boot,在Spring Boot中,我试图创建一个@RestController,它应该接受@RequestBody的不同结构,并使用@Valid注释验证bean 我选中了两个选项,如使请求正文字符串,映射和JSON结构,但在这些选项中,我无法使用javax.validation.Valid注释 我的请求主体架构如下所示 模式1 模式2 基于请求中的类型键消息键持有不同的结构值。在模式1中message键具有String值,在模式2中message键具有对象列表作为值 我正在寻找处理上述场景的最佳方法,

在Spring Boot中,我试图创建一个
@RestController
,它应该接受
@RequestBody
的不同结构,并使用
@Valid
注释验证bean

我选中了两个选项,如使请求正文
字符串
映射
JSON
结构,但在这些选项中,我无法使用
javax.validation.Valid
注释

我的请求主体架构如下所示

模式1

模式2

基于请求中的
类型
消息
键持有不同的结构值。在模式1中
message
键具有
String
值,在模式2中
message
键具有
对象列表作为值

我正在寻找处理上述场景的最佳方法,使用
@Valid
注释启用bean验证


任何帮助都将不胜感激。谢谢大家!

您可以在bean级别执行此操作

请参阅以下链接

为了从一个bean切换到另一个bean,您可以使用switch case,或者在获取bean类型后在服务层而不是restcontroller(API)层中添加@Valid

public methodName(@Valid ObjectName object){
.....
}
在Bean中,您可以声明

数据类型

@有效的 数据类型消息


然后在名为bean的消息中执行相同的操作。

您可以在bean级别执行此操作

请参阅以下链接

为了从一个bean切换到另一个bean,您可以使用switch case,或者在获取bean类型后在服务层而不是restcontroller(API)层中添加@Valid

public methodName(@Valid ObjectName object){
.....
}
在Bean中,您可以声明

数据类型

@有效的 数据类型消息


然后在名为bean的消息中执行同样的操作。

使用spring提供的默认实现是不可能的。您应该自己创建一个接受两种类型(字符串、对象列表)对象的自定义类,然后编写自己的注释来验证这一点。

使用spring提供的默认实现是不可能的。您应该自己创建一个接受这两种类型(字符串、对象列表)对象的自定义类,然后编写自己的注释来验证这一点

@NotNull
@Size(min=2, max=30)
private String name;
public methodName(@Valid ObjectName object){
.....
}