@RequestMapping(value = "/test")
@ResponseBody
public Object test(@RequestParam("latitude") String latitude,
@RequestParam("longitude") String longitude) {
}
在这种情况下,如果纬度不为空,则经度也必须不为空。
如何验证相关请求参数? 是否有开箱即用的解决方案,或者手动验证?
最佳答案
如果您使用的是最新版本的 spring,则有一个注释 @Validated
.
通过此注释,我们可以验证 @RequestParam
和@PathVariable
最需要注意的是@Valid
用于验证 RequestBody
抛出异常 MethodArgumentNotValidException
而@Validated
抛出 ConstraintViolationException
由于这两个异常属于不同类型,因此您必须使用 @ExceptionHandler
以不同方式处理它们。 ,如下所示:-
@ExceptionHandler(value = { ConstraintViolationException.class })
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public ResponseEntity<Type> handleConstraintViolationException(ConstraintViolationException e) {
// your code here to handle the exceptions accordingly
}
@ExceptionHandler(value = { MethodArgumentNotValidException.class })
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public ResponseEntity<Type> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
// your code here to handle the exceptions accordingly
}
关于Spring验证相关请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49574181/