2016-03-07 40 views
2

我有一個端點實現,即我將一個對象傳遞給參數列表。我正在嘗試使用@NotNull註釋來驗證此對象是否爲空。@NotNull批註不能按預期工作Java Jersey

@POST 
@Path("path") 
public Response endpointMethod(@NotNull @ApiParam(value = "abc", required = true) Object object) { 
     return Response.status(Status.OK).build(); 
} 

如果驗證對象不是null,那麼端點將返回200 OK響應。 但是,當我使用指定的路徑向該端點發出請求並且沒有任何內容時,不會引發任何錯誤。相反,我能夠檢索200響應(即使在返回響應之前檢查對象是否爲空,它也表明情況如此)。

有人可以指導我如何以正確的方式驗證對象是否爲null?

+0

您準確使用哪個註釋?它來自'javax.validation.constraints'包嗎? – Cosu

+0

@Cosu是的,這是包。 – Adam

回答

5

如果您對classpath(org.glassfish.jersey.ext:jersey-bean-validation:2.22.2)具有bean驗證依賴關係,那麼應該拾取它由框架和開箱即用。

還要確保您的@NotNull註釋來自javax.validation.constraints包

+1

謝謝!添加jersey-bean-validation依賴解決了它。 – Adam

+0

沒有解決我的問題 – CandleCoder

+0

@CandleCoder你分享最小的設置,爲此無效? –

1

不知道的@ApiParam,但對我來說,以下工作與新澤西2.22(從招搖?):

@GET 
@Path("/hz-test") 
public Response proc(
      @NotNull @QueryParam("hz") String myvalue) { 

我也懷疑,你會需要使用@NotNull與其他的一個Jersey參數註釋(例如@QueryParam,@HeaderParam等)。

順便說一句,你使用什麼版本的球衣? (@NotNull僅在> 2.x AFAIK中受支持)

+0

對我來說沒有完全解決。但是謝謝你的幫助。 – Adam