2014-04-23 72 views
0

當我爲我的服務指定一個@DefaultValue時,如果它沒有提供的參數被調用,爲什麼它只能是一個字符串,而不是任何其他類型?下面的@DefaultValue(0)會拋出一個錯誤「無法從int轉換爲字符串」 - 如果我想讓默認值成爲另一種類型,該怎麼辦?爲什麼我不能指定@DefaultValue的類型?

@POST 
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
@Path("/createAccount") 
public BankActivity createAccount(
     @QueryParam("ownerId") @DefaultValue(0) int ownerID, 
     @QueryParam("accountPin") @DefaultValue("1234") String pin, 

回答

1

@DefaultValue表示用於形式參數,查詢參數,餅乾,和一些其他的默認值,如在Javadoc說明。這些不同的參數和值作爲請求的一部分發送。 http服務器將它們作爲字符串接收,並且您的jax-rs容器將它們解析並適當地轉換它們。 @DefaultValue將該值作爲字符串提供,讓容器將其轉換爲與提供的值一樣。

因此,只需提供int值的字符串表示形式,容器將進行正確的轉換

相關問題