我想做这样的事情:

@Stateless
@Path("/sensors/{sensorid}/version")
@Consumes({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
@Produces({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
public class SensorVersionRestView extends VersionRestView{

    @PathParam("sensorid")
    private String sensorid;

    @GET
    @Path("count")
     // so the complete path is i.e.
     // domain.com/rs/sensors/111211/version/count
    public void getCount() {

        // do something with the sensorId....

    }
}

但是我唯一得到的是运行时的null(我将Glassfish v3与Jersey一起使用)。编译器和eclipse从未在成员类变量中提到@PathParam的问题。

我的构造有什么问题?

主要问题是,为什么我不想在此类中的每个方法上使用整个路径,所以存在另一个类来处理传感器层上的某些其余操作(即deomain.com/rs/sensors/count)。

最佳答案

我相信您需要将其更改为:

@Stateless
@Path("/sensors/{sensorid}/version")
public class SensorVersionRestView extends VersionRestView {

@GET
@Path("count")
@Consumes({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
@Produces({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
 // domain.com/rs/sensors/111211/version/count
public void getCount(@PathParam("sensorid") String sensorid) {
    // do something with the sensorId....
}
}

关于rest - JAX-RS @PathParam注入(inject)类成员变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4991860/

10-11 22:44