作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道我可以解决这个问题,但与将参数从参数映射(应根据 javadoc 解码)中拉出相比,如果使用带注释的查询参数,行为会有所不同,这似乎很奇怪。这是一个错误,还是一个怪癖?
@GET
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
public Response getAssets(@Context UriInfo info, @QueryParam("q") String searchQuery) {
// The request URI is http://myhost.com/appRoot?q=foo+bar%20baz
// At this point seachQuery="foo bar baz"
// The + has been decoded (along with any % encoded characters)
// Here searchQuery2="foo+bar baz", the '+' has not been decoded
// but the %20 has been
MultivaluedMap<String, String> params = info.getQueryParameters();
String searchQuery2 = params.get("q").get(0);
最佳答案
根据 UrlInfo.getQueryParameters
的 Javadocs只有“参数名称和值中的转义八位字节序列被解码”。
另一方面,QueryParam Javadocs 声明“值是URL 解码,除非使用 Encoded 注释禁用它”。
所以,回答您的问题,它看起来像是一个规范决定。
无论如何,也许你应该在 JAX-RS mailing lists 上提出这个讨论.
关于java - 为什么 UriInfo.getQueryParameters() 不解码 '+' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29824160/
这个问题在这里已经有了答案: Why does += of a list within a Python tuple raise TypeError but modify the list anyw
我是一名优秀的程序员,十分优秀!