我有一个控制器
@RestController
public class MessageRestController {
@PostMapping(value = "/sendMessage")
public ResponseEntity<?> sendMessage(
@RequestParam String username,
UriComponentsBuilder builder
) {
UriComponents components = builder.path("/profile/{username}").buildAndExpand(username);
System.out.println("LinK: " + components);
return ResponseEntity.created(components.toUri()).build();
}
}
哪个是POST方法,并且在调用之后应该在站点的标题中添加一个值,例如
http://localhost:8080/profile/hereIsSomeUsername
然后它应该重定向到给定的地址。但是,没有任何反应。位置设置为https://zapodaj.net/102d5f0d98e58.png.html,但不会重定向。
答案 0 :(得分:1)
您可以将 HttpServletResponse 对象添加到Controller方法参数中,Spring将完成其余工作以确保它已正确连接。
@PostMapping(value = "/sendMessage")
public ResponseEntity<?> sendMessage(
@RequestParam String username,
UriComponentsBuilder builder,
HttpServletResponse response
){
//...
}
然后,您可以将重定向发送到所需的网址:
response.sendRedirect(components.toUri());
请记住处理IOException。
完成此操作后,您的请求将被重定向到所选的网址,您将收到新网址的回复。
答案 1 :(得分:0)
作为一个ajax呼叫,你无法在服务器端做任何事情来使主站点位置发生变化(通过主站点,我知道你在谈论在浏览器上打开的站点)。您将收到的重定向将影响您在那里重定向的ajax调用,而不是“浏览器站点”。
您的客户端代码需要对服务器端响应做出反应并更改当前页面的位置。