Java @PathVariable不适用于非拉丁语言
我有一个从数据库获取Post的控制器方法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相同的方法 我尝试了
@RequestMapping(value = {"/post/{id}", "/post/{id}/{title}"}, method = RequestMethod.GET)
数据库中的post表如下所示:
- 身份证
- 头衔
- 描述
- 鼻涕虫
@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