2011-11-18 62 views
0


我正在嘗試使用Spring mvc創建簡單的CRUD控制器和視圖。
我能:
獲取文檔列表 上傳文件 刪除的文檔Spring3 MVC - 如何在同一個控制器上正確實現CRUD?


如果我想使用的形式發送請求,
如何實現文件下載?
我應該使用每個文件嗎? 另一件事 - 我正確使用MVC框架?

<html> 
<body> 

<!-- the list: --> 
<c:forEach items="${documentList}" var="documentRow"> 
    <Generate table here> 

<!-- upload part --> 
<form:form modelAttribute="uploadDocument" method="post" enctype="multipart/form-data"> 
    <form:input path="fileData" type="file"/> 
    <input type="hidden" id="actUploadocument" name="action" value="uploadDocument" /> 
</form:form> 

<!-- delete part --> 
<form:form method="post" enctype="multipart/form-data"> 
    <input type="hidden" id="documentId" value="" /> 
    <input type="hidden" id="actUploadocument" name="action" value="deleteDocument" /> 
</form:form> 

</body> 
</html> 

CRUD控制器?

@Controller 
@RequestMapping("/documents") 
public class DocumentsController 
{ 
@Autowired 
private MainService mainService; 

@RequestMapping(method = RequestMethod.GET) 
public String listDocuments(Model model) { 
    List<Document> docs = mainService.getAllDocuments();   
    model.addAttribute("documentList",docs); 
    model.addAttribute(new UploadDocument()); 
    return "admin/documents"; 
} 

@RequestMapping(method = RequestMethod.POST , params="action=uploadDocument") 
public String uploadDocument(UploadDocument uploadDocument){ 
    savedocument(uploadDocument); 
    return "redirect:/admin/documents.do"; 
} 

@RequestMapping(method = RequestMethod.POST , params="action=removeDocument") 
public String removeDocument(@RequestParam(value="documentId", required=true) String documentId){ 
    savedocument(documentId); 
    return "redirect:/admin/documents.do"; 
} 

@RequestMapping(method = RequestMethod.POST , params="action=downloadDocument") 
public String downloadDocument(@RequestParam(value="documentId", required=true) String documentId, 
          HttpServletRequest request,HttpServletResponse response) { 
    writeDocToResponse(documentId,response); 
    return null; 
} 
+0

我認爲你的控制器看起來不錯。這基本上是品嚐和宗教,但這對我很有用。 –

+0

從視圖(JSP)下載文檔的最佳實踐是什麼? – user648026

回答

0

基本上所有你需要打開文件下載對話框是一組響應特性來識別HTTPresponce爲附件。 例如:

response.reset(); 
response.setContentType(getYourFileContentType()); 
response.setHeader("Content-Disposition","attachment; filename=\""+getYourFileName()+"\""); 

然後你可以打電話給你的服務的方法來流文件。

+0

也應該是一個get方法處理程序!只需使用POST將FORM數據發送到控制器。 –

+0

謝謝monsieur,我知道如何寫對象到響應, 方法** writeDocToResponse **那樣做.. – user648026

相關問題