・業務で日本語を含むURLにリダイレクトすると、日本語が文字化けしてしまうエラーの対応をしたので、その際のメモ。
参考にさせて頂いたサイト
https://mike-neck.hatenadiary.com/entry/2018/01/04/073000
https://weblabo.oscasierra.net/java-urlencode/
以下のようなメソッドの場合、nameにアルファベットのみの値が入れば問題ないが、日本語が含まれる場合文字化けして404エラーとなる。
@PostMapping("/detail/{name}/create")
public String create(Model model,
RedirectAttributes redirectAttrs,
@PathVariable("name") String name,) {
return "redirect:/detail/" + name;
}
日本語が含まれるようなパラメータがある場合は、以下のように修正。
@PostMapping("/detail/{name}/create")
public String create(Model model,
RedirectAttributes redirectAttrs,
@PathVariable("name") String name,) {
redirectAttrs.addAttribute("name", name);
return "redirect:/detail/{name}";
}
日本語が文字化けしてしまうのは、URLエンコーディングされていないため。
RedirectAttributes#addAttributeメソッドを使用するとURLエンコーディングが行われるため、動的にURLに値を埋め込む際は直接記述はせずに必ずRedirectAttributes#addAttributeメソッドを使用する。