@QueryParam 不在锚点('#')之后解析参数
@QueryParam not parsing parameter after anchor ('#')
我注意到来自 javax.ws.rs.QueryParam;
的 @QueryParam 注释中有一个奇怪的行为
参考下面的代码片段,当我将 url 设置为类似以下内容时:
http://host:port/services/serv123?test=OK
我可以按预期检索 'test' 的值。
但是,当我将 url 设置为类似以下内容时:
http://host:port/services/serv123#top?test=OK
@QueryParam("test") returns null.
这是我正在使用的代码。每个注释都被显式导入。
@Path("/services")
public class Services {
[...]
@GET
@Path("/{srvID}")
@Produces(MediaType.TEXT_HTML)
public ServicesView getServiceDetailPage(@PathParam("srvID") String srvId,
@QueryParam("test") String test) {
[...]
return new ServicesView([...]);
}
[...]
}
我已经在 Dropwizard 0.9.1(包括 Jersey)中对此进行了测试
请注意:
- 我对行为的解释感兴趣,而不是解决方法(我已经有几个,如果有人感兴趣,可以 post 他们)。
- 据我所知,
http://host:port/services/serv123#top?test=OK
是完全合法的 url 并且 @QueryParam 应该能够处理它(我很高兴被证明是错误的,只是解释为什么它不是合法 url).
- 为了测试,我也尝试将“#”编码为 %23%3F,但正如预期的那样,它没有起作用。
我错过了什么?
而不是
http://host:port/services/serv123#top?test=OK
使用
http://host:port/services/serv123?test=OK#top
如果您希望?test=OK
成为查询参数而不是锚点的一部分。
我注意到来自 javax.ws.rs.QueryParam;
的 @QueryParam 注释中有一个奇怪的行为参考下面的代码片段,当我将 url 设置为类似以下内容时:
http://host:port/services/serv123?test=OK
我可以按预期检索 'test' 的值。
但是,当我将 url 设置为类似以下内容时:
http://host:port/services/serv123#top?test=OK
@QueryParam("test") returns null.
这是我正在使用的代码。每个注释都被显式导入。
@Path("/services")
public class Services {
[...]
@GET
@Path("/{srvID}")
@Produces(MediaType.TEXT_HTML)
public ServicesView getServiceDetailPage(@PathParam("srvID") String srvId,
@QueryParam("test") String test) {
[...]
return new ServicesView([...]);
}
[...]
}
我已经在 Dropwizard 0.9.1(包括 Jersey)中对此进行了测试
请注意:
- 我对行为的解释感兴趣,而不是解决方法(我已经有几个,如果有人感兴趣,可以 post 他们)。
- 据我所知,
http://host:port/services/serv123#top?test=OK
是完全合法的 url 并且 @QueryParam 应该能够处理它(我很高兴被证明是错误的,只是解释为什么它不是合法 url). - 为了测试,我也尝试将“#”编码为 %23%3F,但正如预期的那样,它没有起作用。
我错过了什么?
而不是
http://host:port/services/serv123#top?test=OK
使用
http://host:port/services/serv123?test=OK#top
如果您希望?test=OK
成为查询参数而不是锚点的一部分。