【发布时间】:2017-03-15 22:01:46
【问题描述】:
在我的控制器中,我有带有 4 个请求参数的 requestMapping“searchUser”。 对于请求参数“phoneNumber”,我还接受特殊字符,如 '('、')'、'-' 和 '+'。
除了字符“+”之外,所有字符都显示在我的日志中。如果我发送例如“+123”或“123+1”之类的值,我会得到我的控制器“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 后端。 我的 Angular 中的 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);
}
【问题讨论】:
-
这是因为
+是 URL 中的特殊字符。尝试将其作为%2C发送到您的网络服务器。 -
这是正常的。请参阅 HTML 规范的 Form submission 部分。你是如何调用 URL 的?如果它是从浏览器中的 HTML 表单调用的,
+应该会自动进行百分比转义。 -
@f1sh - %2C 是逗号,%2B 是加号。并为您的评论添加更多内容,plus 被视为空格的 URL 转义。少数几种方法之一。陷阱查看更多 URL 编码。
-
@Quintium 你是对的。显然很难阅读 ascii 表:D
-
@VGR 。我在我的角度前端调用它。请参阅更新
标签: java rest spring-boot special-characters