2013-10-29 105 views
1

如何將bean從一個控制器傳遞到另一個控制器?我試過是:豆從控制器到另一個

默認獲得頁面的控制器

@RequestMapping(value = "/{prePath:[a-zA-Z]+}/module", method = RequestMethod.GET) 
public String module(@RequestParam(defaultValue = "") 
String message, @RequestParam(defaultValue = "") 
String messageType, HttpServletRequest request, ModelMap model) 
{ 
    model.addAttribute("message", message); 
    model.addAttribute("messageType", messageType); 
    return "als-student/module"; 
} 

連接到控制器

<a href="../${ usertype }/module/${ file_id }.do" >Spring Tutorial</a>

的另一個控制器只從數據庫中提取數據,並假設發將數據發送到另一個控制器

@RequestMapping(value = "/{prePath:[a-zA-Z]+}/module/{file_id}") 
public String getModule(@PathVariable("file_id") 
int fileId, Model model) 
{ 
    try 
    { 
     FileBean fileBean = new FileDAO().getFileInfo(fileId); 
     if(fileBean != null) 
     { 
      model.addAttribute("fileBean", fileBean); 
      return "redirect:../module.do"; 
     } 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

    return "redirect:../module.do?error"; 
} 

但我無法訪問它的jsp,它什麼也沒有顯示。這是我如何訪問它

<p> ${ fileBean.fileName } </p>

+0

請閱讀「Model」(和「HttpServletRequest」)屬性以及「重定向」的作用。然後閱讀有關閃光屬性。 –

回答

0

您需要使用RedirectAttributes來實現這一目標:

@RequestMapping(value = "/{prePath:[a-zA-Z]+}/module/{file_id}") 
public String getModule(@PathVariable("file_id") 
int fileId, Model model, RedirectAttributes redirectAttributes) 
{ 
    try 
    { 
     FileBean fileBean = new FileDAO().getFileInfo(fileId); 
     if(fileBean != null) 
     { 
      //model.addAttribute("fileBean", fileBean); 
      redirectAttributes.addFlashAttribute("fileBean", fileBean); 
      return "redirect:../module.do"; 
     } 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

    return "redirect:../module.do?error"; 
} 

Flash attributes被重定向(通常是在會議)之前暫時保存被提供給請求重定向後立即移除。

+0

這種方法有缺陷嗎? – newbie

+0

春季框架參考文檔建議使用Flash屬性重定向場景 –

+0

如何將重定向模型提取到另一個控制器?我嘗試添加到模型中,但它引發異常 – newbie

相關問題