我正在使用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) {
// ...
}
}
或许还有其他方法可以做得更好吗?
答案 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;
}
}
希望它有所帮助!