【问题标题】:How can I overload a method with @QueryParam in Jersey/Spring?如何在 Jersey/Spring 中使用 @QueryParam 重载方法?
【发布时间】:2012-04-05 13:59:13
【问题描述】:

我想用@QueryParam 重载一个方法,但每次我尝试执行这段代码时都会抛出:

SEVERE: Exception occurred when intialization
com.sun.jersey.spi.inject.Errors$ErrorMessagesException

我的代码是:

@GET
@Path("/test")
@Produces("text/plain")
public String getText(@QueryParam("PID") String pid)
{
  return pid;
}

@GET
@Path("/test")
@Produces("text/plain")
public String getText(@QueryParam("PID") String pid, @QueryParam("NAME") String name)
{
  return pid + name;
}

【问题讨论】:

    标签: java spring jersey overloading query-parameters


    【解决方案1】:

    不可能。

    在 java 中没问题,但问题是 - 从 servlet 方面 - jersey 需要将每个 url 映射到类中的某个函数。

    当然,你可以做的是将它分成 2 个方法,或者构建一个方法来检查参数并执行正确的逻辑。

    【讨论】:

    • +1 方法必须具有唯一的路径。查询参数不被视为路径的一部分。您可以尝试改用@PathParam
    【解决方案2】:

    您可以根据请求中存在的请求/查询参数来重载其余端点。

    这是解决我的用例的答案:为具有不同参数的相同 url 模式创建两个方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      • 2014-02-21
      相关资源
      最近更新 更多