Jersey 1.x正在用空格符号替换加号.我怎么能阻止这个?

Dan*_*lan 4 java jersey jersey-1.0

我正在使用泽西客户端向我的球衣服务器发送查询参数.这是查询:?sort=id+ASC

但是在我检索此查询参数的代码中return uriInfo.getQueryParameters().getFirst("sort");,此值的计算结果为id ASC.为什么会发生这种情况,我该如何预防呢?

Bog*_*dan 8

除了@ IanRoberts的建议,您可以使用@Encoded注释来获取您参数的原始未解码值(默认情况下,Jersey会对值进行解码,这就是为什么id+ASC会出现id ASC在您的代码中).

以下示例检索默认行为的解码值:

@GET
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response test(@QueryParam("sort") String sort) {
    // sort is "id ASC"
    return Response.ok().entity(sort).build();
}
Run Code Online (Sandbox Code Playgroud)

要更改刚刚添加的行为@Encoded:

@GET
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response test(@QueryParam("sort") @Encoded String sort) {
    // sort is "id+ASC"
    return Response.ok().entity(sort).build();
}
Run Code Online (Sandbox Code Playgroud)