2011-11-15 70 views
2

我得到了一個經典的多部分形式與彈簧mvc 3工作正常:我可以上傳文件到控制器與2參數(名稱和說明)。 我的控制器獲取MultipartFile文件和參數,並將其放入DAO類的數據庫中。彈簧mvc&DWR - 需要幫助來實現進度條,同時上傳文件

我的目標:只需在上載文件時添加我的表單進度條!

任何人都可以通過告訴我不同​​的步驟來幫助我。 如果可能的話,我更喜歡使用DWR來實現ProgressListener方法。 (爲MultipartResolver實現一個ProgressListener,javascript添加到我的表單中)

任何幫助將被欣賞!

這裏是我的形式:(ajoutDocumentRapport.jsp)

<form:form method="post" action="save.html" commandName="documentFormBean" enctype="multipart/form-data"> 
<input type="hidden" name="depot" value="${depot.id}"/> 
<table> 
<tr> 
    <td><form:label path="name">Name of file</form:label></td> 
    <td><form:input path="name" /></td> 
    <td><form:errors path="name" cssClass="error"/></td> 
</tr> 
<tr> 
    <td><form:label path="description">Description of file</form:label></td> 
    <td><form:textarea path="description" /></td> 
    <td><form:errors path="description" cssClass="error"/></td> 
</tr> 
<tr> 
    <td><form:label path="content">Document</form:label></td> 
    <td><input type="file" name="file" id="file"></input></td> 
</tr> 
<tr> 
    <td colspan="2"> 
     <input type="submit" value="add Document."/> 
    </td> 
</tr> 
</table>  
</form:form> 

這裏是我的控制器:

@RequestMapping(value = "/save", method = RequestMethod.POST) 
    public ModelAndView save(HttpServletRequest request, 
     @Valid DocumentFormBean documentFormBean,BindingResult result, 
     @RequestParam("file") MultipartFile file) { 
    Map<String,Object> map = new HashMap<String, Object>(); 

    map.put("documentFormBean", new DocumentFormBean()); 
    map.put("documentList",documentDao.findAllForaDepot(Long.parseLong((String) request.getParameter("depot")))); 
    map.put("depot", depotDao.find(Long.parseLong((String) request.getParameter("depot")))); 

    if (result.hasErrors()) { 
     map.put("errors", result); 
     return new ModelAndView("ajoutDocumentsRapport", map); 
    } else{ 

    try { 
     Blob blob = Hibernate.createBlob(file.getInputStream()); 
     Document newDocument = new Document(); 
     newDocument.setTitle(documentFormBean.getName()); 
     newDocument.setDescription(documentFormBean.getDescription()); 
     newDocument.setFilename(documentFormBean.getName()); 
     newDocument.setContentType(file.getContentType()); 
     newDocument.setFilename(file.getOriginalFilename()); 
     newDocument.setContent(blob); 
     newDocument.setDepot(depotDao.find(Long.parseLong((String) request.getParameter("depot")))); 
     documentDao.save(newDocument); 
     map.put("documentList",  documentDao.findAllForaDepot(Long.parseLong((String) request.getParameter("depot")))); 
     } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return new ModelAndView("ajoutDocumentsRapport",map); 
    } 
} 

回答