簡體   English   中英

@PathParam作為Jersey中的類變量

[英]@PathParam as class variable in Jersey

我正在使用Jersey來構建RESTful服務,並且我有一些Servlet在多個方法中使用相同的PathParam。 所以我想將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) {
        //  ...
    }
}

也許還有其他更好的方法?

您可以通過將所有參數提取到一個新類(保留原始@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;
    }
}

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM