将枚举值列表作为 HTTP 查询参数传递
Passing list of enum values as HTTP query parameters
我想将枚举值列表作为 HTTP 查询参数传递。服务器端的入口点是这样的:
@GET
@Path("/getMyResult")
public MyResultType getMyResult(@QueryParam("me") final List<MyEnum> myEnums)
无法修改。考虑 MyEnum
包含值 MyValue1
、MyValue2
、MyValue3
和 MyValue4
。 (MyResultType
与这个问题无关。)只传递一个值,如下所示,工作正常(这对我来说有点奇怪):
http://localhost/getMyResult?me=MyValue1
但是,以这种方式传递元素列表:
http://localhost/getMyResult?me=[MyValue1,MyValue3,MyValue4]
或者这样:
http://localhost/getMyResult?me=MyValue1,MyValue3,MyValue4
或者这样:
http://localhost/getMyResult?me=["MyValue1","MyValue3","MyValue4"]
不起作用,它抛出类似这样的异常(第一个选项的错误消息):
RESTEASY001720: Unable to extract parameter from http request: javax.ws.rs.QueryParam(\"me\") [...]
No enum constant com.mycompany.myapp.MyEnum.[MyValue1,MyValue3,MyValue4]
谁能告诉我如何将 MyEnum
元素列表作为 HTTP GET 查询参数传递?谢谢!
为此(以及您需要传递 List
的其他情况),您必须为每个元素插入参数名称。
这样:
http://localhost/getMyResult?me=MyValue1&me=MyValue3&me=MyValue4
我想将枚举值列表作为 HTTP 查询参数传递。服务器端的入口点是这样的:
@GET
@Path("/getMyResult")
public MyResultType getMyResult(@QueryParam("me") final List<MyEnum> myEnums)
无法修改。考虑 MyEnum
包含值 MyValue1
、MyValue2
、MyValue3
和 MyValue4
。 (MyResultType
与这个问题无关。)只传递一个值,如下所示,工作正常(这对我来说有点奇怪):
http://localhost/getMyResult?me=MyValue1
但是,以这种方式传递元素列表:
http://localhost/getMyResult?me=[MyValue1,MyValue3,MyValue4]
或者这样:
http://localhost/getMyResult?me=MyValue1,MyValue3,MyValue4
或者这样:
http://localhost/getMyResult?me=["MyValue1","MyValue3","MyValue4"]
不起作用,它抛出类似这样的异常(第一个选项的错误消息):
RESTEASY001720: Unable to extract parameter from http request: javax.ws.rs.QueryParam(\"me\") [...]
No enum constant com.mycompany.myapp.MyEnum.[MyValue1,MyValue3,MyValue4]
谁能告诉我如何将 MyEnum
元素列表作为 HTTP GET 查询参数传递?谢谢!
为此(以及您需要传递 List
的其他情况),您必须为每个元素插入参数名称。
这样:
http://localhost/getMyResult?me=MyValue1&me=MyValue3&me=MyValue4