当前位置: 首页 > 知识库问答 >
问题:

为什么JAX-RS POST不能处理多值映射

黄丰
2023-03-14
@POST
@Consumes({MediaType.APPLICATION_FORM_URLENCODED})
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response test(MultivaluedMap<String, String> work) {
    return Response.ok(work.keySet().size()).build();
}
 curl -i -X POST 'http://localhost:XXX/some/test' -d "param=value&param2=value2" -H "Content-Type: application/x-www-form-urlencoded"
@POST
@Consumes({MediaType.APPLICATION_FORM_URLENCODED})
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response test(@FormParam("param") String param) {
    return Response.ok(param).build();
}

多值映射不存在的原因是什么?会不会是什么过滤?对于未知数量的参数,有什么可供选择的?

更新是由于泽西+Spring的一个特殊性。在这个答案中可以找到解决方法。

共有1个答案

楚墨一
2023-03-14

多值映射不存在的原因是什么?会不会是什么过滤?对于未知数量的参数,有什么可供选择的?

默认情况下,您的JAX-RS实现似乎正在检测表单输入,并在它到达您的方法之前读取/处理正文。您是否尝试过:

@POST
@Consumes({MediaType.APPLICATION_FORM_URLENCODED})
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response test(Form workForm) {
    MultivaluedMap<String,String> work = workForm.asMap();
    return Response.ok(work.keySet().size()).build();
}

 类似资料:
  • 我只想用hadoop mapreduce来排序我的日志行。我将该行的所有字段作为输出键,并将输出值设置为null。但是当运行时,在第行出现空指针异常 所以为什么hadoop映射的输出值不能为空?为什么hadoop reduce的输出值可以(我测试过)?

  • 我正在尝试测试我的贝宝沙箱帐户中的经常性付款。我跟踪了这个链接https://developer.paypal.com/webapps/developer/docs/classic/express-checkout/ht_ec-recurringpaymentprofile-curl-etc/ 我试了很多次,贝宝只显示这个消息。我怎样才能为我的沙箱帐户实现不出错的重复支付?

  • 我正在尝试捕获caller方法中的IllegalAccessException。但它抓不到它。而是给出了一个错误。

  • 我有一个web服务的逻辑处理程序,我需要它来访问servlet的上下文(我想是通过web服务上下文)。 部署时出错: 如果我正确地注入web服务: 很好。

  • 问题内容: 在玩Go代码时,我发现映射值不可寻址。例如, 产生错误 mapaddressable.go:7:无法获取mymap [1]的地址 而代码, 工作完美。 为什么会这样呢?为什么Go开发人员选择使某些值无法解决?这是语言的缺点还是功能? 编辑 :来自C ++背景,我不习惯于这种流行趋势。例如,以下代码可以正常工作: 如果有人可以指出为什么在Go中无法实现(或故意没有实现)相同的 寻址 能力

  • 问题内容: 我发现切片图功能和通道经常一起作为 参考类型 提及。但是我注意到,切片的东西不会表现出参考行为,就像它们会过时一样: 要么 通常,我会通过牢记切片描述符实现的内部组件来理解这一点:切片值可以视为len,cap和data指针的结构。 但是地图值永远不需要像 为什么?映射值仅仅是指向映射描述符的指针吗?如果是这样,为什么还不这样做呢? 问题答案: 在Go中,没有像C ++中那样的引用类型。