java - 带有特殊字符 '+' 的 RequestParam

标签 java rest spring-boot special-characters

在我的 Controller 中,我有带有 4 个请求参数的 requestMapping“searchUser”。 对于请求参数“phoneNumber”,我也接受特殊字符,如“(”、“)”、“-”和“+”。

除字符“+”外,所有字符都显示在我的日志中。例如,如果我发送像“+123”或“123+1”这样的值,我会得到我的 Controller “123”和“123 1” 它将“+”替换为空格。

它只发生在 '+' 上

@RequestMapping(method = RequestMethod.GET, value = "/search", produces = "application/json")
    public List<User> getWebUserProfiles(HttpServletRequest request, HttpServletResponse response,
        @RequestParam("firstName") String firstName, @RequestParam("lastName") String lastName,
        @RequestParam("email") String email
        @RequestParam("phoneNumber") String phoneNumber);

你知道我要补充什么吗?

提前致谢!

更新:

我在我的前端使用 Angular 2,我有一个表单,我将值进一步发送到我的 spring-boot 后端。 我的 http 服务有角度:

   search(searchParams: any){
        let params = new URLSearchParams();
        params.set('firstName', searchParams.firstName);
        params.set('lastName', searchParams.lastName);
        params.set('email', searchParams.email);
        params.set('phoneNumber', searchParams.phoneNumber);

        return this._http.get(this.baseURL+'search', 
                        { search:params })
                        .map(response => response.json())
                        .catch(this.handleError);
    }

最佳答案

好的,我解决了。

我把它编码在我的前面。没有其他选择。

params.set('phoneNumber', encodeURIComponent(searchParams.phoneNumber));

感谢您的帮助!

关于java - 带有特殊字符 '+' 的 RequestParam,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40382529/

相关文章:

java - 监听器移除

java - REST WADL 与 SOAP

javascript - dojo/使用NodeJS请求一个png图像数组缓冲区,并将图像返回给客户端

java - 在 Spring Boot 应用程序中创建自定义连接池

具有可选 css 类的 Java Freemarker 宏

java - 将无符号整数值插入字节缓冲区,保持二进制表示形式

java - 准备时无法在 mp3 媒体播放器上显示 ProgressDialog

java - 以编程方式忽略(省略)REST 服务的 JSON 响应中的特定字段,而不更改 DTO 对象类

spring - 为什么 AuthenticationManager 会抛出 StackOverflowError?

spring-boot - 为什么升级到Tomcat 10.0.5会导致spring boot开机后关机?