1

我正在开发一个简单的宁静网络服务,并且是一个新手。因此,我参考了基本教程并成功执行了它们。

以下是我编写的示例代码以进一步进行

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

@Path("/text/{sso}")

public class Do {


      @GET
      @Produces(MediaType.TEXT_PLAIN)
      public String simple(@PathParam("ss") @QueryParam("d") String params) {
        return "Hello Jersey"+params;
      }

      @GET
      @Produces(MediaType.TEXT_PLAIN)
      public String advanced(@PathParam("as") @QueryParam("d") String params) {
        return "Hello Jersey-----"+params;
      }
}

我基本上需要的是在同一个类中公开两种不同的方法,并根据 url 访问适当的方法。

执行上述方式时会引发以下错误 - com.sun.jersey.spi.inject.Errors$ErrorMessagesException 如果我走在正确的轨道上,有人可以指导我吗?如果是,请告诉我我错过了哪里。如果不是这种情况的正确方法是什么?

4

2 回答 2

2

您的代码中有两个问题。

  1. @PathParam注释需要应用于您的方法的参数
  2. 注解的值@PathParam需要匹配一个路径段。

你的类中唯一的路径段是这样定义的:

@Path("/text/{sso}")

并具有价值'sso'。因此,您的代码应该看起来更像这样:

@Path("/text/{sso}")
public class Do {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String simple(@PathParam("sso") String sso,
            @QueryParam("d") String params) {
        return "Hello Jersey" + params;
    }

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String advanced(@PathParam("sso") String sso,
            @QueryParam("d") String params) {
        return "Hello Jersey-----" + params;
    }
}
于 2013-04-09T08:05:11.883 回答
0

如果你想匹配两个s ,你的方法必须有两个参数。QueryParam

public String simple(@PathParam("ss") String paramSs,
                     @PathParam("d") String paramD) {
  // ...
}

@PathParam一个方法参数的注解。

于 2013-04-09T08:02:16.780 回答