我有一个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
,它就可以工作。
是否可以在同一方法中使用@PathParam
和MultipartHashMap
?
编辑:
客户端发送了一个application/x-www-form-urlencoded
请求,但我无法更改。我想使用路径参数使其余所有内容保持不变。
答案 0 :(得分:0)
将@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;