2013-04-09 247 views
1

我正在开发一个简单的宁静web服务,是一个新手。因此我参考了基本教程并成功执行了它们。@path和@queryparam在泽西岛

下面是示例代码,我写了继续进一步

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 如果我在正确的轨道上,有人能指导我吗?如果是,请告诉我我错在哪里。如果不是这种情况的正确方法是什么?

回答

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; 
    } 
} 
+0

谢谢..明白了 – Guru 2013-04-09 10:41:12

0

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

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

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

+0

知道了..谢谢.. – Guru 2013-04-09 10:41:41