2012-10-23 73 views
0

我是新來的春天,所以不知道我怎麼能做到這一點。我必須通過使用單一控制器方法來處理2個用例。從一個控制器方法到另一個控制器方法的內部轉發(Spring-MVC)

方法已經到位,所以我不能改變它的簽名,因爲它可以打破所有其他的功能主義,這裏是方法簽名

@RequestMapping(value = "/edit-address", method = RequestMethod.POST) 
    public @ResponseBody JsonResponse editAddress() 

JsonResponse與以下簽名

private String status; 
private Object result; 
private String steps; 
自定義對象

還有一個要求我們需要從第三部分驗證此地址,並基於返回結果需要顯示彈出窗口。 我可以輕鬆地顯示珀普向上如果方法簽名不是一個自定義的對象,但現在不知道我怎麼能做到這一點

有沒有辦法實現任何followwing的

  1. 要發送JSP內容從此方法返回到視圖中以代替JSON對象。
  2. 要在內部前進控制在控制器中的另一個方法,它可以發送回着眼於UI
+1

我認爲你真正想要的是對不同的內容類型使用不同的視圖。請參閱http://stackoverflow.com/questions/4403643/supporting-multiple-content-types-in-a-spring-mvc-controller – iwein

回答

0

如何只撰寫此控制器在另一個控制器,可以控制和內部委託調用該控制器,這樣:

@Controller 
public class WrapperController{ 
    @Autowired JsonResponseController jsonResponseController; 

    @RequestMapping("/custom_jspview") 
    public String customRequestMapping(..., Model model){ 
     JsonResponse jsonResponse = this.jsonResponseController.editAddress(); 
     model.addAttribute("jsonresponse", "jsonResponse"); 
     return "myview"; 
    } 

    @RequestMapping("/redirectView") 
    public String redirectView(){ 
     return "redirect:/custom_jspview"; 
    } 
} 
+0

你可以更具描述性,對不起,不太確定春天,所以需要更多的解釋: ) –

+0

是的,基本上我推薦的是不使用JsonResponseController作爲控制器,而是作爲另一個常規bean,然後將該bean注入到您擁有的另一個自定義控制器中,並將調用從您的自定義控制器委託給JsonResponseController bean。這樣你就可以控制是否提供視圖(jsp,tiles,velocity view等)或json,如上所示。 –

相關問題