【问题标题】:Jersey @PathParam : contains multiple parameters with no annotationJersey @PathParam :包含多个没有注释的参数
【发布时间】:2016-09-01 07:05:57
【问题描述】:

以下是我在 Jersey 中使用的方法签名,当我调试/运行程序时出现错误:

[[致命] 方法 public javax.ws.rs.core.Response com.xxxx.xxxxx.Xxxxx.xxxxx.xxxxxxxx(java.lang.String,java.lang.String,java.lang.String,javax.资源类 com.xxxxxx.xxxxx.xxxxxx.xxxxxx 上的 ws.rs.container.ContainerRequestContext) 包含多个没有注释的参数。

我的代码:

@PUT
@Path("/user/{user}/{role}")
@Consumes({MediaType.APPLICATION_JSON,MediaType.TEXT_PLAIN})
@Produces("application/json")

public Response myFunction(@PathParam("user") String user,
    @PathParam("role") String role,
    String rawData,
    @Context ContainerRequestContext crc) {

}

我在这里做错了什么。

谢谢

【问题讨论】:

    标签: jersey jersey-2.0


    【解决方案1】:

    编辑:这个答案帮助我解决了我的错误,但正如 Cássio Mazzochi Molin 在下面的评论中提到的那样:它不会帮助你(并且文档是针对错误版本的 Jersey ..)。我完全错过了。

    请原谅我试图帮助你。我希望你已经解决了你的错误:)

    喂!

    我对 REST 很陌生(所以用一桶香草盐来回答我的问题), 但我想我知道你的错误来自哪里。

    你必须绑定你的参数rawData

    例如:@PathParam("rawdata") String rawData@HeaderParam("rawdata") String rawData

    取决于你想从哪里提取参数,你必须 给参数写一个@annotation。

    您可以提取以下类型的参数用于您的 资源类:

    • 查询
    • URI
    • 路径
    • 表格
    • 饼干
    • 标题
    • 矩阵

    以上文字来自链接: http://docs.oracle.com/javaee/6/tutorial/doc/gilik.html你应该 如果您还没有这样做,请看一下并阅读一些内容 :)

    【讨论】:

    • 1. 我认为这部分不准确:你必须绑定你的参数rawData。该方法使用@PUT 注释,因此rawData 应在请求有效负载中发送,并且不需要@___Param 注释。 2. Jersey 2.x(请参阅问题中的标记)是 Java EE 7 的一部分,您提供的链接来自 Java EE 6。不过文档没有错。
    • 感谢您的纠正。我遇到了同样的问题(但使用@GET),这解决了我的问题。而且我不知道@GET@PUT 之间可能存在差异。在尝试解决其他问题之前,也许我应该更多地了解一个主题。经验教训:)
    • 不同之处在于GET 请求没有(至少不应该)请求负载。我了解 OP 在 PUT 请求的有效负载(正文)中接收到 rawData
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    相关资源
    最近更新 更多