【问题标题】:How can I pass a value with '/' symbol as get parameter to my controller?如何将带有“/”符号的值作为获取参数传递给我的控制器?
【发布时间】:2019-11-15 08:13:06
【问题描述】:

我有控制器:

@RestController
public class MyController {

    @GetMapping(value = "/products/{value}")
    public String get(@PathVariable String value) {
        System.out.println(value);
        return "OK";
    }
}

启动服务器后,我尝试发送这样的消息:

http://localhost:8080/products/Mazda

我在控制台中看到 Mazda。但是当我用反斜杠发送值时:

http://localhost:8080/products/Mazda\6

我收到一个错误:

这个应用程序没有明确的 /error 映射,所以你看到 这是一个后备。

如何将带有 '\' 符号的值作为 get 参数传递给我的控制器?

我期待:马自达\6

【问题讨论】:

    标签: java spring spring-boot url httprequest


    【解决方案1】:

    首先,您需要在客户端对路径变量进行编码。以下是 Java 的示例:

    URLEncoder.encode("Mazda\\6", "UTF-8");
    

    结果将是Mazda%5C6。 第二步是 allow the processing of requests 在其 URL 中包含特殊字符。

    三、解码控制器中的字符串:

    String decodedValue = URLDecoder.decode(value, "UTF-8");
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多