Кодировка изменения URL + вместо% 20 - PullRequest
1 голос
/ 02 мая 2020

Кодировка URL обычно заменяет пробел знаком плюс (+) или% 20. Весной MVC заменяется на% 20. Мой контроллер как:

@GetMapping(path = "/post/{id}/{title}")
public String postView(@PathVariable("id") Long id, @PathVariable("title") String title, Model model){


    Post post = postService.findById(id);
    model.addAttribute("post", post);
    return "singlePost";
}

Мне нужно заменить% 20 ​​на (+) или (-) Спасибо

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

В пути URL пробелы заменяются на %20 ( RFC3986 ), а параметры запроса URL следуют за application/x-www-form-urlencoded, который заменяет пробелы на +.

Если вам нужно закодировать параметр строки запроса, вы можете использовать java.net.URLEncoder.

Но так как вы используете @PathVariable, ваши параметры являются частью пути, поэтому они должны кодироваться с пробелами, замененными на %20. Spring предоставляет UriUtils.encodePath для этой задачи.

Например, для построения запроса к вашему /post/{id}/{title} отображению:

Long id = 1L; 
String title = "My title";
String path = "/post/" + id + "/" + UriUtils.encodePathSegment(title, "UTF-8");

В вашем методе postView вам не нужно сделать любое декодирование, как Spring уже делает.

0 голосов
/ 02 мая 2020

Вы можете использовать decode метод URLDecoder класса. Например, если заголовок имеет URL-кодированные значения,

String urlDecodedTitle = URLDecoder.decode(title, StandardCharsets.UTF_8.toString())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...