@PathParam作为Jersey中的类变量

时间:2015-07-23 10:17:50

标签: java rest jersey

我正在使用Jersey构建RESTful服务,并且我有多个方法使用相同PathParam的Servlet。因此,我希望将PathParam值存储在全局变量中,而不是在每个方法中存储局部变量。

类似的东西:

@Path("mensas/{mensaID}/dishes/{dishID}")
public class CommentServlet {
//Global PathParams
@PathParam("mensaID")
long mensaID;
@PathParam("dishID")
long dishID;

@GET
@Path("comments")
public String getDishComments() {
    //  ...
}

}

而不是:

@Path("mensas/{mensaID}/dishes/{dishID}")
public class CommentServlet {

    @GET
    @Path("comments")
    //Local PathParams
    public String getDishComments(@PathParam("mensaID") long mensaID, @PathParam("dishID") long dishID) {
        //  ...
    }
}

或许还有其他方法可以做得更好吗?

1 个答案:

答案 0 :(得分:0)

您可以通过将所有参数提取到新类(保留原始@PathParam注释)来重构代码:

public class DishParams {
    @PathParam("mensaID")
    private long mensaID;

    @PathParam("dishID")
    private long dishID;

    public long getMensaID() {
        return mensaID;
    }

    public void setMensaID(long mensaID) {
        this.mensaID = mensaID;
    }

    public long getDishID() {
        return dishID;
    }

    public void setDishID(long dishID) {
        this.dishID = dishID;
    }
}

然后使用上述注释为@BeanParam

的类声明参数
public class CommentServlet {

    @GET
    @Path("comments")
    public String getDishComments(@BeanParam DishParams params) {
        // ...
        return null;
    }
}

希望它有所帮助!