微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将值设置为 QueryParam 的可选值,以便在 Java 中进行 rest api 调用

如何解决如何将值设置为 QueryParam 的可选值,以便在 Java 中进行 rest api 调用

想知道如何将 queryParam 值设置为 @QueryParam 的 @Optional。

尝试了以下

@QueryParam("x") int x

我想为 x 设置一个认值并将其设为可选值。

我尝试了以下方法

@QueryParam("x") @DefaultValue("1") int x

但是当我传入空的时候

http://localhost:8100/sort/values?x=

我的期望是将 x 的值设为 1 因为当我设置 @DefaultValue("1")

但我收到以下错误

Failed to convert value of type 'java.lang.String' to required type 'int'; nested exception is java.lang.NumberFormatException

因为 @DefaultValue 只接受 String 而我期待 int 数据类型

有什么方法可以设置 defaultValue 并使其成为 @QueryParam可选 我可以为 RequestHeader 执行此操作 但是当我想要对 QueryParam

进行相同类型的实现时遇到问题

如果我遗漏了任何内容或任何不同类型的实现,请告诉我。

解决方法

@DefaultValue 将在 URL 中缺少查询参数时启动,如下所示。

http://localhost:8100/sort/values

由于请求参数 'x' 没有任何值存在,处理程序方法接收值作为 x 的空字符串 ("") 并尝试将其转换为整数(因为 x 是 int),最终失败并显示该异常消息.

如果你想处理空值,那么可以通过编程来完成。我们可以使用 apache commons StringUtils 库,将空字符串转换为 1。

StringUtils.defaultIfEmpty(x,"1")
,

如果使用 Spring 作为标签建议,您可以尝试:

@RequestParam(required = false) String myParam
,

您可以使用@RequestParam 代替@QueryParam 它有一个必需的属性,您可以将其设置为 false

示例:

public String get(@RequestParam(required = false) int x) {}

或默认:

public String get(@RequestParam(defaultValue = 1) int x) {}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。