2011-11-18 5 views
0


Я пытаюсь создать простой контроллер CRUD и просматривать с помощью Spring mvc.
Я могу:
Получить список документов Загрузить документ Deleted DocumentSpring3 MVC - как правильно внедрить CRUD на тот же контроллер?


Если я хотел бы отправить запрос с помощью FORM,
Как реализовать загрузки документа?
Должен ли я использовать для каждого документа? Другое дело - я правильно использую структуру 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

Спасибо, господин, я знаю, как написать объект для ответа, Метод ** writeDocToResponse ** делает это .. – user648026

Смежные вопросы