想知道如何将queryparam值设置为@queryparam的@optional。
尝试了以下操作
@QueryParam("x") int x
我想为x设置一个defaultvalue,并使其成为可选的。
我试过以下方法
@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执行相同的实现时会遇到问题
请让我知道,如果我遗漏了什么或任何不同类型的实施。
3条答案
按热度按时间unftdfkk1#
如果按照标签建议使用spring,您可以尝试:
mmvthczy2#
@DefaultValue
将在url中缺少查询参数时启动,如下所示。由于请求参数“x”不带任何值,因此处理程序方法将该值作为x的空字符串(“”)接收,并尝试将其转换为整数(因为x是int),但最终由于该异常消息而失败。
如果您想处理空值,那么可以通过编程来完成。我们可以使用ApacheCommonsStringUtils库并将空字符串转换为1。
z6psavjg3#
您可以使用@requestparam而不是@queryparam,因为它有一个可以设置为false的必需属性
例子:
公共字符串get(@requestparam(required=false)int x){}
或默认值:
公共字符串get(@requestparam(defaultvalue=1)int x){}