resteasy: @QueryParam 解析嵌套数组结构
resteasy: @QueryParam to parse nested array structure
我正在使用一个名为 tabulator 的 javascript 库在客户端的表格中显示数据。
Tabulator js 库提供了一种功能,可以在 ajax 请求的查询参数中对 filters
的表示形式进行编码。例如,查询参数如下所示:
https://host/myEndpoint?size=10&page=1&filters%5B0%5D%5Bfield%5D=username&filters%5B0%5D%5Btype%5D=like&filters%5B0%5D%5Bvalue%5D=filteredBy
这是相同的 url 解码:
https://host/myEndpoint?size=10&page=1&filters[0][field]=username&filters[0][type]=like&filters[0][value]=filteredBy
如果可能的话,我想要一个这样的 Resteasy 端点:
@GET
@Path("/myEndpoint")
@Consumes("application/json")
@Produces("application/json")
public Response myEndpoint(@QueryParam("page") Integer page,
@QueryParam("size") Integer size,
@QueryParam("filters") List<Filter> filters) {
resteasy 解释 page
和 size
没问题,但是 filters
总是一个大小为 0 的列表。
我的 Filter
bean 有 3 个名为 field
、type
和 value
的字段,其构造函数具有单个 String
参数,如 [=24] 所述=].
但是resteasy似乎没有识别和解析filters
查询参数?是否可以在resteasy中解析这种嵌套数组结构的查询参数?
filters[0][field]=username&filters[0][type]=like&filters[0][value]=filteredB
我仍然希望有更好的方法,但这里有一个至少目前对我有用的可能解决方案:
@GET
@Path("/myEndpoint")
@Consumes("application/json")
@Produces("application/json")
public Response myEndpoint(@QueryParam("page") Integer page,
@QueryParam("size") Integer size,
@Context UriInfo uriInfo) {
for(String key : uriInfo.getQueryParameters().keySet()) {
// check if key starts with something like `filters[0]`
// and then parse it however you need.
}
}
我正在使用一个名为 tabulator 的 javascript 库在客户端的表格中显示数据。
Tabulator js 库提供了一种功能,可以在 ajax 请求的查询参数中对 filters
的表示形式进行编码。例如,查询参数如下所示:
https://host/myEndpoint?size=10&page=1&filters%5B0%5D%5Bfield%5D=username&filters%5B0%5D%5Btype%5D=like&filters%5B0%5D%5Bvalue%5D=filteredBy
这是相同的 url 解码:
https://host/myEndpoint?size=10&page=1&filters[0][field]=username&filters[0][type]=like&filters[0][value]=filteredBy
如果可能的话,我想要一个这样的 Resteasy 端点:
@GET
@Path("/myEndpoint")
@Consumes("application/json")
@Produces("application/json")
public Response myEndpoint(@QueryParam("page") Integer page,
@QueryParam("size") Integer size,
@QueryParam("filters") List<Filter> filters) {
resteasy 解释 page
和 size
没问题,但是 filters
总是一个大小为 0 的列表。
我的 Filter
bean 有 3 个名为 field
、type
和 value
的字段,其构造函数具有单个 String
参数,如 [=24] 所述=].
但是resteasy似乎没有识别和解析filters
查询参数?是否可以在resteasy中解析这种嵌套数组结构的查询参数?
filters[0][field]=username&filters[0][type]=like&filters[0][value]=filteredB
我仍然希望有更好的方法,但这里有一个至少目前对我有用的可能解决方案:
@GET
@Path("/myEndpoint")
@Consumes("application/json")
@Produces("application/json")
public Response myEndpoint(@QueryParam("page") Integer page,
@QueryParam("size") Integer size,
@Context UriInfo uriInfo) {
for(String key : uriInfo.getQueryParameters().keySet()) {
// check if key starts with something like `filters[0]`
// and then parse it however you need.
}
}