в моем контроллере У меня есть requestMapping "searchUser" с 4 параметрами запроса. Для параметра request "phoneNumber" я также принимаю специальные символы, такие как '(', ')', '-' и '+'.RequestParam со специальным символом '+'
Ожидается, что символы «+» персонажа будут показаны в моем журнале. Если я отправлю, например, значения «+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);
Вы знаете, что я должен добавить?
благодарит заранее!
UPDATE:
Я используя угловые 2 для моего веба-интерфейса, где у меня есть форма, и я посылаю значение дополнительно к моему пружинным загрузкам бэкэнду. Мой 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''. – f1sh
Это нормально. См. Раздел [Форма представления] (https://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1) спецификации HTML. Как вы вызываете URL-адрес? Если он вызывается из HTML-формы в браузере, '+' должен автоматически пропускаться процентами. – VGR
@ f1sh -% 2C - это запятая,% 2B - плюс. И чтобы добавить еще к вашему комментарию, плюс рассматривается как пробел URL для пробелов. Один из немногих способов сделать это. загляните в URL Encoding еще немного. – Quintium