尝试使用JAX-RS @PathParam允许正斜杠。发生的事情是它占用了价值的后端,而不是整个价值。下面的例子

方法代码

@PUT
@POST
@Path("/temp/{keyValue:.+}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public void setValues(@PathParam("keyValue") PathSegment myvalue) {
  for (String key : myvalue.getMatrixParameters().keySet()) {
    System.out.println(batch)
  }


测试网址

https://localhost:8443/*path*/temp/keyValue;key1=THIS/SUCKS


结果

batch = SUCKS


期望的结果

batch = key1=THIS/SUCKS


我尝试更改方法签名中的正则表达式,但无法完成这项工作。如果所有内容都经过url编码,则可以通过%2F将其传递出去。但是,如果我将Apache httpd更改为AllowEncodedSlashes On,它将破坏网站的其余部分。有什么想法吗?

我正在运行httpd-> tomcat-> restService(JAX-RS)

最佳答案

我无法使其正常工作,因此我重写了它,使其接受了转换为JSON对象的字符串。在URL字符串中发送参数不是一个好主意,因为URL有字符限制。我现在将其作为数据通过AJAX调用发送。

10-01 14:11