Java springrest在@RequestBody中添加@NotEmpty而不创建请求POJO

Java springrest在@RequestBody中添加@NotEmpty而不创建请求POJO,java,spring,validation,httprequest,Java,Spring,Validation,Httprequest,我想在@RequestBody中添加@NotEmpty,但我不想仅为请求创建额外的POJO,我如何才能做到这一点 我想这样做,但当我将[]放入请求体时,它仍然返回我创建的201状态代码,这意味着@NotEmpty实际上不起作用 @PostMapping @ResponseStatus(HttpStatus.CREATED) public void create(@Valid @NotEmpty @RequestBody Set<String> request) { ...

我想在
@RequestBody
中添加
@NotEmpty
,但我不想仅为请求创建额外的POJO,我如何才能做到这一点

我想这样做,但当我将
[]
放入请求体时,它仍然返回我创建的
201状态代码,这意味着
@NotEmpty
实际上不起作用

@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public void create(@Valid @NotEmpty @RequestBody Set<String> request) {
      .....
}
采样器等级

public class SampleRequest {

    @NotEmpty
    private Set<String> name;

     ..Setter and Getter
}
公共类采样器请求{
@空空如也
私有集合名;
…接二连三
}

我要做的第一件事是检查类路径上是否有验证实现。@NotEmpty注释来自一个单独的jar(
validation api.jar
),因此,在代码编译时,可能不会在运行时强制执行验证。您应该看到一个名为
hibernate validator.jar的依赖项


如果做不到这一点,您可以尝试将其替换为
@Size(min=1)

您还需要使用@Validated()注释控制器、方法或参数,以便触发验证因为您不验证DTO之类的复杂Java对象,所以您可以对方法参数施加约束(验证注释)

你只需要做两件事

方法参数前的1-put约束(valiadition)注释

2-Put@已在类上验证

最后,我们有

一些有用的链接


当我将
设置请求
放在POJO中,并用
@NotEmpty
对其进行注释时,它会工作并提示我错误,但当我将其放在
@RequestBody
前面时,它不会工作,因此,我可以假设
@NotEmpty
实际上没有问题?听起来spring忽略了控制器方法参数上的验证约束注释。我怀疑需要pojo。我还在控制器方法参数中尝试了
@Size(min=1)
,它也不起作用。你能发布完整的源代码或链接吗?@noelob你知道Spring为什么忽略控制器验证约束吗。
public class SampleRequest {

    @NotEmpty
    private Set<String> name;

     ..Setter and Getter
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public void create(@RequestBody @NotEmpty SampleRequest request) {
      .....
}
@Validated
public class testController{

 //..

}
@Validated
public class testController{

@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public void create(@RequestBody @NotEmpty SampleRequest request) {
      //..
   }

}