java - Spring - 在 Controller 中检查路径变量是否为空

标签 java spring spring-boot rest model-view-controller

我在 Controller 获取请求时定义了一个路径变量:

@PathVariable("ticketId") final Long ticketId

如何检查此值不为空?

阅读 https://www.baeldung.com/spring-validate-requestparam-pathvariable @NotBlank 被使用,但没有提到检查 null。

使用:

if ticketId == Null {
//return message indicating to user that null has been passed to path
}

似乎是一种不好的做法,应该使用 try/catch 代替?

最佳答案

您可以使用注释 @NotNull 来验证传递的参数不是 null。但是,它仅适用于 Long 等对象类型。如果您使用原始数据类型 long,则无法使用注释。

@PathVariable("ticketId") @NotNull final Long ticketId

我更推荐使用 long ,根据定义,它不能为 null

或者,您可以抛出 ResponseStatusException如果有更高级的验证传入参数的逻辑。这种方法的优点是 HTTP 状态被传播到最终响应。以下示例结果为 400 Bad Request :

if (ticketId == null) {
    throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "ticketId cannot be null");
}

关于java - Spring - 在 Controller 中检查路径变量是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61085412/

相关文章:

java - Java 泛型参数之间的区别

java - 如何在 Java 中创建一个不可变的单例?

java - Apache HttpClient、基本身份验证和 session cookie

java - 是否可以禁用 spring cloud stream starter 应用程序的安全性?

angularjs - 在JHipster生成的项目中,哪里指定了生产配置文件的前端源文件夹?

java - 通过ajax请求将事件添加到与spring MVC集成的fullCalendar

java - 是否可以让 Spring ApplicationListener 监听 2 种或更多类型的事件?

spring - 本地主机与公共(public) IP 地址上的不同身份验证

java - Facebook Spring Boot 使用 OAuth2 登录

java - 从资源文件夹中读取文件,在 Spring Boot 应用程序中始终给出 Inputstream 为空的情况