2017-04-11 67 views
1

下面是函數頭QueryParam跳過一切符號標誌後

@GET 
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) 
@Path("/getxyz") 
public Response getXyz(@QueryParam("input") String input){ 

SomeClass abc = someService.getValue(input); 

和輸入值可以包含符號,以及。我面臨的問題是當我使用@QueryParam時,它跳過&符號後面的所有值。

例如:如果從瀏覽器端再次輸入test&test,則它被解釋爲只有test

此外,我使用encodeURIComponent(input)對客戶端的輸入進行編碼。

有什麼想法?

回答

2

查詢參數被&符號seprated,那之後你的情況&跳過第二次測試的原因。如果你想要兩個test,那麼在URL中將它們發送爲test and test

另請參閱What is the proper way to seperate query string parameters in a url?,如何發送查詢參數。

+0

但是,如果我們將'&'更改爲'和',這將改變輸入查詢本身。有沒有更好的方法來解析查詢參數? – ajup

+0

你真的需要把它作爲'test&test'嗎? –

+0

如果是的話,然後嘗試發送它像key =「測試和測試」即封閉你的價值在雙引號。 –

3

您應該在瀏覽器端編碼符號符號,使用test%26test而不是test&test。如您所說,如果您使用encodeURIComponent,請在客戶端編碼後顯示您的查詢參數。它是test%26test

+0

是的,我確實認爲它是測試%20%26%20test – ajup

1

最終我能夠解決這個問題,使用Spring MVC框架,即使用@RequestParam解析輸入請求。它準確地解碼test%20%26%20testtest & test

如果您的項目與Jersey一起使用Spring MVC,此方法將非常有用。感謝大家提出寶貴的建議!