我编写的代码如下。
Controller1 {
@Autowired
Controller2 controller2
//Caller method
void method1() {
controller2.furnction1(model,redirectattributes);
}
}
Controller2 {
public void function1(Model model, RedirectAttributes atr){
}
}
问题是: 如何在我的新Controller( Controller1 )中初始化 RedirectAttributes ( redirectattributes )。 我的Controller1不是表单提交,因此我默认无法获得 RedirectAttributes 。
如何在controller2中调用funcation1。
答案 0 :(得分:1)
重定向在这里不起作用。所有表单数据都将丢失。尝试将请求转发到另一个URL。
尝试类似
的内容 Controller1 {
@RequestMapping("url1")
public String method1() {
return "forward:/url2";
}
}
Controller2 {
@RequestMapping("/url2")
public String function1(Model model, RedirectAttributes atr){
//do something
}
}
答案 1 :(得分:0)
在我看来,从另一个控制器调用控制器不是一个好习惯。尝试使用return redirect:/ function1来调用Controller2中的function1。如果它是一个常见的功能/服务尝试编写一个帮助你的工作。
答案 2 :(得分:0)
RedirectAttributes与POST请求有什么关系?
只需将其作为参数添加到第一个控制器方法中。
var checkJWT = passport.authenticate('jwt')
router.get('/protected',checkJWT, (req, res) =>{
res.json(req.user);
});
}
但另一方面说,这不是一个好的模式,你应该使用类似的东西:
void method1(RedirectAttributes redirectattributes) {
controller2.furnction1(model,redirectattributes);