2017-07-19 105 views
1

我的控制器具有類似下面的方法:如何在Spring Boot中解碼由@RequestParam設置的字符串?

@ResponseBody 
public String test(@RequestParam("r") String r){ 
String requestURI = request.getQueryString(); 
// What I want: abc+def%2Cfjg 
System.out.println(requestURI.split("=")[1]); 
// This is not what I want: abc def,fjg 
System.out.println(r); 
} 

我怎樣才能讓Spring啓動知道RequestParameter不能解碼?即不將+轉換爲空格,%2C轉換爲逗號等。

+0

你能詳細說明你的理由嗎?根據URI RFC, – Kayaman

+0

+是一個可接受的字符,我想利用它來分隔屬於請求參數的實體。 –

+0

你的意思是你想要一個參數有多個值?那麼爲什麼不使用標準的方式呢? – Kayaman

回答

0

通過使用解碼方法,您可以解碼您的網址。

private String decode(String value) { 
    String decoded 
     = URLDecoder.decode(value, StandardCharsets.UTF_8.toString()); 
    return decoded; 
} 

如果你想編碼它然後使用編碼方法。

private String encode(String value) { 
    String encoded = 
     URLEncoder.encode(value, StandardCharsets.UTF_8.toString()); 
    return encoded; 
} 
相關問題