2013-04-30 94 views
0

試圖做一些應該很容易... 即時通訊使用Spring MVC 3,我想重定向到另一個控制器內的控制器... ex :如何從一個控制器重定向到另一個控制器在春天

@Controller 
@SessionAttributes 
public class UserFormController { 
@Autowired 
private UserService userService; 
@RequestMapping(value = "/method1", method = RequestMethod.GET) 
public ModelAndView redirectFormPage() { 
//redirect to controller2 here, 
//pointing to a method inside it, without going to any url first 
} 

想這樣做與ModelAndView的,但在我看來,所有的解決方案必須先通過一個URL就在這時,我可以重定向到控制器。

感謝您的幫助!

===============更多信息=========== 流程就像這樣:controller1上的methodA被調用...做一些東西...然後想要將用戶重定向到listPage ...此頁面包含一個對象列表,其中controller2上的methodB能夠​​加載並將其發送到此listPage。我試圖實現的是:總是有人需要得到這個頁面,我會在這個controller2上調用這個方法並加載它。

+0

所以你想要controller2返回ModelAndView對象?你想這個特定的方法不被映射到一個網址? – 2013-04-30 09:29:59

+0

@reagten否...實際上controller2上的這個方法映射到一個頁面,這就是我想要的。問題是:我必須在進入特定頁面之前加載數據列表。將添加更多關於問題描述的信息......謝謝! – 2013-05-01 10:27:39

回答

1

你可以做

public String redirectFormPage() { 
    return "redirect:/url/controller2"; 
} 
+1

你的意思是將它指向映射到@RequestMapping上的名稱? – 2013-05-01 10:34:56

+0

是的,第二個控制器的URL映射。它會自動將請求重定向到其他控制器。 – NilsH 2013-05-01 10:37:53

+0

我試過了,不同的是我的控制器上沒有@RequestMapping名字......我給這個控制器裏的方法命名,並且用重定向調用它們不起作用。如果我命名我的控制器,我怎麼知道我希望它被調用的方法? – 2013-05-01 10:48:27

0

我不知道爲什麼你要做到這一點,但是這可能工作:

@Controller 
@SessionAttributes 
public class UserFormController { 
@Autowired 
private UserService userService; 

@Autowired 
private Controller2 controller2; 

@RequestMapping(value = "/method1", method = RequestMethod.GET) 
public ModelAndView redirectFormPage() { 
return controller2.redirectMethod(); 
} 

只是注入控制器2,並調用所需的方法

+0

嗡..我正在尋找更好的方法,然後不得不在另一個構造函數中注入構造函數...想知道MVC是否不會將所有方法映射到某個地方,這樣我就可以調用它們...添加更多信息給問題,這樣您就可以理解爲什麼即時通訊會執行此操作... – 2013-05-01 10:29:26

0

大題。我喜歡使用struts重定向動作結果類型來避免在處理髮布表單的操作中瞭解下一個視圖。

例如,像UpdateContactInfoAction這樣的類的操作方法將返回contactInfoSaved,而不是爲下一個視圖準備數據並返回gotoShippingOptionsPage。關於流程中下一步選擇運輸選項的知識僅在struts配置中。

任何人都知道如何用Spring MVC做到這一點?

+0

this更好地用於評論,而不是用於潛在的答案,因爲詢問者具體詢問Spring。嘗試實際引導用戶,而不是他們需要的答案。 – 2014-05-28 15:33:23

相關問題