JAVA接收: use @PathParam and application/x-www-form-urlencoded body in the same method

标签 java jax-rs wildfly resteasy

我有一个 EJB,其中带有注释的方法以将其公开为休息 Web 服务。

@Path(value = "{group}/grid")
@POST
@Consumes(value = MediaType.APPLICATION_FORM_URLENCODED)
@Produces(value = {MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public GridResponse<MyObject> getTypeFromGroup(
        @PathParam(value = "group") String group, 
        MultivaluedHashMap<String,String> formParams
) throws BssException;

MultivaluedHashMap 将包含查询使用的一些未知的动态信息。 PathParam 用于创建特定的过滤器。

当我调用此方法时,出现以下错误:

12:17:22,847 ERROR [org.jboss.resteasy.resteasy_jaxrs.i18n] (default task-1) RESTEASY002010: Failed to execute: javax.ws.rs.NotSupportedException: RESTEASY003065: Cannot consume content type

如果我删除 PathParam,它就可以工作。

如果我删除MultipartHashMap,它就可以工作。

是否可以在同一方法中使用@PathParamMultipartHashMap

编辑: 客户端发送 application/x-www-form-urlencoded 请求,我无法更改它。我想使用路径参数来保持其余所有不变。

最佳答案

@Consume 类型从 MediaType.APPLICATION_FORM_URLENCODED 更改为 MediaType.APPLICATION_JSON 并将 @PathParam 移至末尾你的方法args:

@Path(value = "{group}/grid")
@POST
@Consumes(value = MediaType.APPLICATION_JSON)
@Produces(value = {MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public GridResponse<MyObject> getTypeFromGroup(
        MultivaluedHashMap<String,String> formParams,
        @PathParam(value = "group") String group,
) throws BssException;

关于JAVA接收: use @PathParam and application/x-www-form-urlencoded body in the same method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005316/

相关文章:

java - session 参数始终为空

Java EE 6 应用程序客户端登录

java - 使用注释写入 Jersey 中的 ServletContext。

rest - 使用 HTTPS 的持久连接不起作用

java - Java 的 CDI 事件是否在 WildFly 中聚集?

java - 让 reSTLet 模板表示发挥作用

java - 与 Jersey 的意外 REST 映射

java - Wildfly 8.2/Undertow - 属性占位符似乎不适用于主机配置中的别名属性

java - WFLYEE0047 : Incompatible conflicting binding at

java - 显示 arrayList<int[]> 的内容