2016-06-28 4 views
0

Код, который я написал, как показано ниже.Как вызвать один метод контроллера в другом контроллере с RedirectAttributes

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

Controller2 { 

    public void function1(Model model, RedirectAttributes atr){ 

    } 
} 

Вопрос: Как инициализировать RedirectAttributes (redirectattributes) в моем новом контроллере (Controller1). My Controller1 не является отправкой формы, так что я не смог получить RedirectAttributes по умолчанию.

Как назвать функцию 1 в контроллере2.

+0

действительно доцент выглядеть код! Имеет ли это? – Prashant

+0

Вопросы поиска справки по отладке («почему этот код не работает?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См.: Как создать минимальный, полный и проверенный пример. –

+0

У меня есть запись высокого уровня. – user3686738

ответ

0

На мой взгляд, вызов контроллера из другого контроллера не является хорошей практикой. Попробуйте использовать return redirect:/function1, чтобы вызвать функцию1 внутри Controller2. Если это обычная функция/служба, попробуйте написать помощник, который выполнит вашу работу.

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 
    } 
} 
Смежные вопросы