Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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 在1个步骤中验证请求正文和请求参数?_Java_Spring Boot_Javax.validation - Fatal编程技术网

Java 在1个步骤中验证请求正文和请求参数?

Java 在1个步骤中验证请求正文和请求参数?,java,spring-boot,javax.validation,Java,Spring Boot,Javax.validation,使用spring boot和javax.validation(不是spring验证)验证对REST端点的put调用的问题 资源中有以下方法: @PutMapping(...) public Response getResult(@RequestBody @Valid myBody, @PathVariable @MyIdValidation long id) { } 当我调用该方法时,myBody得到验证,我在异常处理程序中得到一个MethodArgumentNotValidExceptio

使用spring boot和javax.validation(不是spring验证)验证对REST端点的put调用的问题

资源中有以下方法:

@PutMapping(...)
public Response getResult(@RequestBody @Valid myBody, @PathVariable @MyIdValidation long id) {

}
当我调用该方法时,
myBody
得到验证,我在异常处理程序中得到一个
MethodArgumentNotValidException
。但是参数
id
未得到验证

只有当
myBody
有效时,
id
也会得到验证

我找到的唯一解决方案是不使用
@Valid
,而是自己实现主体的验证

有更好的解决方案吗

短暂性脑缺血发作
Kibu

我认为Spring MVC框架本身不可行,因为框架通过使用不同的组件以不同的方式处理
@RequestBody
和其他类似
@RequestParam
@PathVariable
。此外,这两个部分都需要断开连接,因为您可能不想验证方法的所有参数

@RequestBody
org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor处理,并从那里调用验证&对于参数或路径变量,验证由
org.springframework.validation.beanvalidation.MethodValidationInterceptor
完成


所以在我看来,控制器方法的方法参数是由框架逐个处理的&在逻辑上是断开的,所以这些验证不能组合在一起

我在这个问题上做了一些努力,并在

一站式验证是可能的,但您需要一种不同的方法。检查项目并测试它


Kibu

是否有
@MyIdValidation
的具体例子?你也在
myBody
上使用JSR注释吗?我想你是对的。因为当我对正文使用自定义验证注释而不是@Valid时,所有内容都在一步中验证,我会得到一个ValidationConstraintException。@kibuKuhn:如果你来自德国,那么我需要你帮个忙。请分享一些方式,如电子邮件或skype等,我可以达到你。是关于我在那里的搬迁。如果愿意提供一些信息或帮助,请与我们分享。