2017-07-19 106 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; 
} 
相关问题