Java @PathVariable不适用于非拉丁语言

Java @PathVariable不适用于非拉丁语言,java,spring-mvc,redirect,seo,Java,Spring Mvc,Redirect,Seo,我有一个从数据库获取Post的控制器方法 @RequestMapping(value = {"/post/{id}", "/post/{id}/{title}"}, method = RequestMethod.GET) 数据库中的post表如下所示: 身份证 头衔 描述 鼻涕虫 当我收到从数据库获取帖子的GET请求时,我从数据库获取帖子,并检查URL中的标题slug是否与数据库中的slug匹配,如果它们相同,我将显示它,如果不相同,我将把请求重定向到与数据库中slug相同的方法 我尝试了

我有一个从数据库获取Post的控制器方法

@RequestMapping(value = {"/post/{id}", "/post/{id}/{title}"}, method = RequestMethod.GET)
数据库中的post表如下所示:

  • 身份证
  • 头衔
  • 描述
  • 鼻涕虫
当我收到从数据库获取帖子的GET请求时,我从数据库获取帖子,并检查URL中的标题slug是否与数据库中的slug匹配,如果它们相同,我将显示它,如果不相同,我将把请求重定向到与数据库中slug相同的方法

我尝试了以下代码

@RequestMapping(value = {"/post/{id}", "/post/{id}/{title}"}, method = RequestMethod.GET)
public String getPost(@PathVariable("id") Long id, 
        @PathVariable("title") Optional<String> title,
        Model model,
        HttpServletRequest request) {

    Optional<PostDTO> postDTO = postService.findOne(id);
    if(postDTO.isPresent()) {
        String slug = postDTO.get().getSlug();

        model.addAttribute("post", postDTO.get());

        if( (title.isPresent() && !slug.equals(title.get())) || !title.isPresent()) {
            // redirect
            return "redirect:/post/" + postDTO.get().getId() + "/" + slug;
        } else {
            return "post/index";
        }
    } else {
        return "post/not_found";
    }
}

不工作意味着
@PathVariable(“title”)可选标题在重定向后将为空。

只是为了澄清:1)您没有在重定向上使用标题,这是故意的吗?2) 你能添加你正在尝试的cUrl吗?是的,我想要db的slug,而不是请求的标题,cUrl:cUrl-X GET“我发现了问题,是关于language@villatco的,你能用另一个字符集试试吗?”?例如:
newstring(title.getBytes(charset.ISO_8859_1))
return "redirect:/post/" + postDTO.get().getId() + "/" + slug;

return "redirect:/post/" + postDTO.get().getId() + "/" + "Hello"; // working fine
return "redirect:/post/" + postDTO.get().getId() + "/" + "مرحبا"; // not working