gpt4 book ai didi

java - @QueryParam 检索表单参数

转载 作者:行者123 更新时间:2023-12-01 12:15:56 29 4
gpt4 key购买 nike

我有以下格式从浏览器发送的查询参数

sort[0][field]:prodId
sort[0][dir]:asc

如何使用@QueryParam在服务器中检索上述参数?

从 Chrome 控制台

take:5
skip:0
page:1
pageSize:5
sort[0][field]:prodId
sort[0][dir]:asc

最佳答案

@QueryParam 应从 Query String 获取附加到请求 URL 的末尾。类似的东西

http://host:port/app/something?key1=value2&key2=value2

然后您可以使用

获取 value1value2
@QueryParam("key1") String value1,
@QueryParam("key2") String value2

现在,在您的帖子标题中,您使用了“表单”一词。如果这是您尝试提交的表单数据,您应该考虑一些事情。将表单数据放入查询字符串时,通常是使用不敏感的数据,主要用于GET请求,其中参数值用于帮助过滤获取资源。如果这是应存储在服务器上的敏感数据,您通常希望将数据作为请求正文中的表单数据POST,如 your previous post 的答案中所示。

<小时/>

更新

如果您不知道使用 @QueryParam 所需的键名称,您可以从注入(inject)的 UriInfo 获取整个查询字符串。 。类似的东西

@GET
@Path("/path/to/resource")
public Response getKendo( @Context UriInfo uriInfo) {

MultivaluedMap params = uriInfo.getQueryParameters();
StringBuilder builder = new StringBuilder();
for (Object key : params.keySet()) {
builder.append(key).append(":")
.append(params.getFirst(key)).append("\n");
}
return Response.ok(builder.toString()).build();
}

getQueryParameters() 将返回 MultivalueMap 中的所有键和值

或者,如果您知道 key ,这些 key 显示在您在评论中发布的 URL 中

test.jsp?take=5&skip=0&page=1&pageSize=5&sort%5B0%5D%5Bfield%5D=prodId&sort%5B0%5D%5Bdir%5D=asc

然后你只需将所有这些键用于QueryParam,即

public Response getKendo(@QueryParam("take") int take, 
@QueryParam("skip") int skip,
@QueryParam("page") int page,
@QueryParam("sort[0][field]") String field...) {
}

所有这些疯狂的东西 sort%5B0%5D%5Bfield%5D 就是用特殊字符对 URL 进行编码的方式,但 JAX-RS 会转换回其正确的形式,即 ”排序[0][字段]"

关于java - @QueryParam 检索表单参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27012333/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com