Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/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
Spring缺少查询参数异常处理_Spring_Spring Boot - Fatal编程技术网

Spring缺少查询参数异常处理

Spring缺少查询参数异常处理,spring,spring-boot,Spring,Spring Boot,我有以下代码: @GetMapping(value = "/users/{id}") @ResponseStatus(HttpStatus.OK) public DtoUser getUserById( @PathParam("id") @PathVariable("id") @RequestParam Long id) { return adminService.getUserById(id); } @ControllerAdvice public class GlobalExce

我有以下代码:

@GetMapping(value = "/users/{id}")
@ResponseStatus(HttpStatus.OK)
public DtoUser getUserById( @PathParam("id")  @PathVariable("id") @RequestParam Long id) {
    return adminService.getUserById(id);
}
@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
    @Override
        public ResponseEntity<Object> handleHttpMessageNotReadable(
                HttpMessageNotReadableException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
            return error_with_my_info;
    }

    @Override
protected ResponseEntity<Object> handleMissingServletRequestParameter(
        MissingServletRequestParameterException ex, HttpHeaders headers,
        HttpStatus status, WebRequest request) {{
        return error_with_my_info;
    }
...
}
该代码:

@GetMapping(value = "/users/{id}")
@ResponseStatus(HttpStatus.OK)
public DtoUser getUserById( @PathParam("id")  @PathVariable("id") @RequestParam Long id) {
    return adminService.getUserById(id);
}
@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
    @Override
        public ResponseEntity<Object> handleHttpMessageNotReadable(
                HttpMessageNotReadableException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
            return error_with_my_info;
    }

    @Override
protected ResponseEntity<Object> handleMissingServletRequestParameter(
        MissingServletRequestParameterException ex, HttpHeaders headers,
        HttpStatus status, WebRequest request) {{
        return error_with_my_info;
    }
...
}
@ControllerAdvice
公共类GlobalExceptionHandler扩展了ResponseEntityExceptionHandler{
@凌驾
公共响应可处理的消息(
HttpMessageNodeReadableException ex、HttpHeaders标头、HttpStatus状态、WebRequest请求){
返回错误\u和\u我的\u信息;
}
@凌驾
受保护的ResponseEntity handleMissingServletRequestParameter(
缺少ServletRequestParameterException ex、HttpHeaders、,
HttpStatus状态,WebRequest请求){{
返回错误\u和\u我的\u信息;
}
...
}
问题是,当我发送一个没有参数的请求时,调用的是HandleHttpMessageNodeable,而不是handleMissingServletRequestParameter。 为什么呢? 其他API端点是否会影响此行为,例如具有相同端点的PUT请求处理程序? 如何使处理MissingServletRequestParameter

即兴制作:

@GetMapping(value = "/users")
@ResponseStatus(HttpStatus.OK)
public DtoUser getUserById(  @RequestParam(value="id" , required=true)Long id) {
    return adminService.getUserById(id);
}
localhost:8080?id=test
现在,如果您不传递id,它将给您handleMissingServletRequestParameter。

为什么有
@PathParam(“id”)
@PathVariable(“id”)
@RequestParam
,您不需要这三个参数。PathParam和PathVariable基本相同。请求参数用于请求参数。这可能是您的问题。PathParam用于路径中的参数。(foo部分是参数)。RequestParam用于请求参数