2016-06-28 56 views
0

我写的代码如下。如何使用RedirectAttributes在另一个控制器中调用一个控制器方法

Controller1 { 
    @Autowired 
    Controller2 controller2 
    //Caller method 
    void method1() { 
     controller2.furnction1(model,redirectattributes); 
    } 
} 

Controller2 { 

    public void function1(Model model, RedirectAttributes atr){ 

    } 
} 

的问题是:如何 并初始化在我的新控制器(控制器1RedirectAttributesredirectattributes)。 我的Controller1不是表单提交,所以我无法获得RedirectAttributes默认情况下。

如何在controller2中调用funcation1。

+0

Dosent真正的样子代码!可以? – Prashant

+0

寻求调试帮助的问题(“为什么这个代码不工作?”)必须包含所需的行为,特定的问题或错误以及在问题本身中重现问题所需的最短代码。没有明确问题陈述的问题对其他读者无益。请参阅:如何创建最小,完整和可验证示例。 –

+0

我写了高级表示法。 – user3686738

回答

0

在我看来,从其他控制器调用控制器不是一个好习惯。尝试使用return redirect:/ function1来调用Controller2内部的function1。如果这是一个常见的功能/服务,请尝试写一个帮助你的工作。

0

什么RedirectAttributes与POST请求做?

只需将它添加到您的第一个控制器方法作为参数。

void method1(RedirectAttributes redirectattributes) { 
    controller2.furnction1(model,redirectattributes); 

}

但在对方说,这不是一个很好的模式,你应该使用类似:

return "redirect:/some/url"; 
1

重定向不会在这里工作。所有的表单数据都将丢失。尝试将请求转发到另一个URL。

尝试像

Controller1 { 

    @RequestMapping("url1") 
    public String method1() { 
    return "forward:/url2"; 
    } 
} 

Controller2 { 
    @RequestMapping("/url2") 
    public String function1(Model model, RedirectAttributes atr){ 
     //do something 
    } 
} 
相关问题