0
我有兩個控制器類:當您使用spring forward重定向到不同的控制器時,如何從ModelAndView返回響應對象?
@Controller
@RequestMapping("/controller")
public class Controller_Indirect{
@RequestMapping("/setContextIndirect")
public @ResponseBody ModelAndView setContextIndirect(HttpServletRequest request, @RequestParam Message message)
throws Exception{
BigMessage bigMessage = new BigMessage();
bigMessage.setMessage(message);
bigMessage.setMessageId("Sample Message ID");
return new ModelAndView("forward:/setContext", "BigMessage", bigMessage);
}
}
@Controller
@RequestMapping("/controller2")
public class Controller_Direct{
@RequestMapping("/setContext")
public @ResponseBody JSONOutput setContextDirect(HttpServletRequest request, @RequestBody BigMessage bigMessage)
throws Exception{
JSONOutput jsonOutput = new JSONOutput();
OutgoingMessage outgoingMessage = new OutgoingMessage();
..
// Some code
..
jsonOutput.setData(outgoingMessage);
jsonOutput.setSuccess(true);
return jsonOutput;
}
}
的JSONOutput這裏有兩個字段的數據和isSuccess。數據是由方法調用返回的對象 - BigMessage 因此有可能調用這些Controller方法中的任何一個。直接方法返回一個JSONOutput對象,間接方法返回一個ModelAndView對象。
有沒有什麼辦法可以做到這一點? (得到相同的JSONOutput從直接的方法,我可以再從間接方法返回的響應):
@Controller
@RequestMapping("/controller")
public class Controller_Indirect{
@RequestMapping("/setContextIndirect")
public @ResponseBody JSONOutput setContextIndirect(HttpServletRequest request, @RequestBody Message message){
BigMessage bigMessage = new BigMessage();
bigMessage.setMessage(message);
bigMessage.setMessageId("Sample Message ID");
JSONOutput jsonOutput = new JSONOutput();
jsonOutput = (JSONOutput) new ModelAndView("forward:/setContext", "BigMessage", bigMessage);
// This JSONOutput should have the OutgoingMessage set as data field.
return jsonOutput;
}
}
@Controller
@RequestMapping("/controller2")
public class Controller_Direct{
@RequestMapping("/setContext")
public @ResponseBody JSONOutput setContextDirect(HttpServletRequest request, @RequestBody BigMessage bigMessage){
JSONOutput jsonOutput = new JSONOutput();
OutgoingMessage outgoingMessage = new OutgoingMessage();
..
// Some code
..
jsonOutput.setData(outgoingMessage);
jsonOutput.setSuccess(true);
return jsonOutput;
}
}
目前,如果我這樣做,BigMessage bigMessage = (BigMessage) modelAndView.getModel().get("BigMessage");
,我得到BigMessage
作爲模型對象。
我需要這是JSONOutput
,其中包含OutgoingMessage
。
任何想法都會很棒。提前致謝。
我不需要他們兩個。我只需要返回JSONOutput對象。 – ybbs
您希望如何在'modelandview'控制器中接收json輸出 –
這不是實際的JSON。這將是一個名爲'JSONOutput'的Java對象。現在讓我們把它叫做輸出。這將有兩個字段('Object data,boolean isSuccess')。數據應該設置爲'OutgoingMessage'並作爲Controller'Output'返回 – ybbs