如何使用RedirectAttributes在另一个控制器中调用一个控制器方法

时间:2016-06-28 09:45:22

标签: java spring spring-mvc

我编写的代码如下。

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。

3 个答案:

答案 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);