你好我有找到一個答案......如何通過使用重定向一個複雜的ModelAttribute:在Spring MVC 3.0
使用案例問題的所有問題:
閱讀在控制器的Excel電子表格。處理了一行4行,行2和行3有一些錯誤,所以我跳過它們並繼續處理其餘的處理。但是我想保留這些行以在處理完成後顯示給用戶。我想保留該行中的所有值以顯示給用戶,只是爲了提供足夠的信息。
所以我試圖做的是這樣的:
@RequestMapping(value = "/bulk-create", method = RequestMethod.POST)
public String bulkCreate(Model model, SpreadSheetFile spreadSheetFile){
...some code...
List<Row> errorRows = new LinkedList<Row>();
...some code to process rows...
//Error Found
errorRows.add(row);
...more code to wrap up processing (possibly more errors)...
model.addAttribute("erroRows", errorRows);
return "redirect:/bulk-review"
}
@RequestMapping(value = "/bulk-review", method = RequestMethod.GET)
public String bulkReview(Model model,
@ModelAttribute("errorRows")
LinkedList<Row> errorRows){
model.addAttribute("errorRows", errorRows);
return "bulk-review";
}
所以基本上我試圖從一個MVC方法一個LinkedList傳遞到另一個沒有實際擊中頁第(除非我誤解如何「重定向:」的作品...它調用控制器的方法第一次是正確的?)
當我但一個斷點進入bulkReview方法,errorRows是空的......那麼我怎麼保留這兩個方法之間的值?
感謝您的幫助!讓我知道是否需要澄清任何事情! :)
克里斯
所以我結束了這樣做: ' model.addAttribute(「errorList」,errorList); model.addAttribute( 「totalRows」,sheet.getLastRowNum()); model.addAttribute(!? 「totalProcessed」,errorList.size()= sheet.getPhysicalNumberOfRows()sheet.getPhysicalNumberOfRows() - errorList.size():0); \t \t \t \t回報 「集中審查」; ' 不是進入另一個控制器方法,而是防止通過一些驗證重新運行頁面,因爲我看到的這種方式的垮臺是,如果用戶按下刷新,它將再次運行前一個控制器方法。 –