Spring mvc & DWR - нужна помощь для реализации индикатора выполнения при загрузке файла - PullRequest
2 голосов
/ 15 ноября 2011

Я получил классическую многочастную форму с пружинным mvc 3, которая прекрасно работает: я могу загрузить файл в контроллер с 2 параметрами (имя и описание).Мой контроллер получает файл и параметры MultipartFile и помещает их в базу данных с классами DAO.

Моя цель: просто добавьте в мою форму индикатор выполнения при загрузке файла!

Может ли кто-нибудь помочь мне, сказав мне различные шаги, чтобы сделать.Я предпочитаю делать это с DWR, если это возможно, чтобы выставить метод ProgressListener.(реализовать ProgressListener for для MultipartResolver, добавить 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);
    }
}

1 Ответ

1 голос
/ 05 апреля 2012

Проверьте это решение, которое я использую: Используйте Spring MVC 3.1 и JQuery, чтобы заставить его работать

http://abambenjamin.blogspot.mx/2012/04/ajax-jquery-html5-progressbar-spring.html

...