Java 重定向只是显示链接,而不是将用户带到链接
以下是我试图重定向的控制器方法:Java 重定向只是显示链接,而不是将用户带到链接,java,spring,spring-boot,Java,Spring,Spring Boot,以下是我试图重定向的控制器方法: @GetMapping("/opensignup/{id}") public String openSignUp(@PathVariable(value = "id") Long Id) { Tournament comp = tournamentRepository.findOne(Id); boolean b = true; comp.setSignUpOpen(b); return "redirect:/comp/" +
@GetMapping("/opensignup/{id}")
public String openSignUp(@PathVariable(value = "id") Long Id) {
Tournament comp = tournamentRepository.findOne(Id);
boolean b = true;
comp.setSignUpOpen(b);
return "redirect:/comp/" + Id;
}
我有另一种方法(如果相关的话,这是一篇博文),它成功地重定向到正确的页面/控制器,使用相同的行:
return "redirect:/comp/" + Id;
它只需在浏览器上打印链接,而不是重定向。(它使用正确的id打印)如下所示:
重定向:/comp/5
如何使其重定向而不是打印?之所以发生这种情况,是因为我的方法顶部有一个@RestController注释,而不是@Controller注释。因为我不需要它是安静的,我改变了它,我的问题就解决了。如果有人想解释为什么会这样做和/或在保留@RestController注释(如果可能)的同时您将如何做,那么请放心。如注释中所述,您的第二个方法是用
@RestController
注释的。虽然@Controller
意味着在Spring上下文中返回视图,@RestController
意味着返回将直接写入响应体的内容(大多数情况下是JSON)
@RestController
基本上是@Controller
和@ResponseBody
注释的组合,第二个将尝试将POJO映射到JSON
进一步阅读:
在第二个调用的方法中,是否有
@ResponseBody
注释?既然您使用浏览器,就可以使用JS来完成。只需捕获响应并像location.href=link
一样打开它,如果需要,if将在之后发布ansthis@BennettDams没有,但我刚刚意识到在类有@conntroller注释之前它在哪里工作,但在这个类中它有@RestController注释。这可能是原因吗?@Lucia是的,我会尽快回复。@BennettDams结果是@RestController造成的,谢谢。