如何解决如何将值设置为 QueryParam 的可选值,以便在 Java 中进行 rest api 调用
想知道如何将 queryParam 值设置为 @QueryParam 的 @Optional。
尝试了以下
@QueryParam("x") int 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 举报,一经查实,本站将立刻删除。