Hi,
ich hab mir jetzt schon wirklich alle Sachen zum FileUpload in Spring durchgelesen, aber bei mir funktioniert er nicht so, wie er sollte. Meine Backingbean ist immer null!
xml:
Das Formular zum Upload
Der Controller
Die Bean
Es funktioniert nur, wenn ich dem Controller den MultiPartResolver injiziere und mir dann darüber das File besorge. Ich würde es aber gerne so wie in der Spring-Doku machen. Vielleicht wißt ihr ja eine Lösung.
Grüße,
Peter
ich hab mir jetzt schon wirklich alle Sachen zum FileUpload in Spring durchgelesen, aber bei mir funktioniert er nicht so, wie er sollte. Meine Backingbean ist immer null!
xml:
Code:
<bean id="documentManagementUploadController" class="de.etss.core.mvc.controller.administration.documentmanagement.DocumentManagementUploadController">
<property name="commandClass" value="de.etss.core.mvc.forms.DocumentManagementUploadForm" />
<property name="commandName" value="MyCommand"/>
<property name="formView" value="documentmanagementupload"/>
<property name="successView" value="documentmanagementshow"/>
</bean>
<bean id="multiPartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
<property name="maxUploadSize" value="100000"/>
</bean>
Das Formular zum Upload
HTML:
<%@ page language="java"%>
<%@ include file="/jsp/include.jsp"%>
<form:form method="post" commandName="MyCommand" enctype="multipart/form-data">
<table>
<tr>
<td><input type="file" name="file" /></td>
<td><input type="submit" value='<spring:message code="button.speichern"/>'></td>
</tr>
</table>
</form:form>
Der Controller
Code:
package de.etss.core.mvc.controller.administration.documentmanagement;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.validation.BindException;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import de.etss.core.mvc.forms.DocumentManagementUploadForm;
public class DocumentManagementUploadController extends SimpleFormController
{
private static final Logger logger = Logger.getLogger(DocumentManagementUploadController.class);
@Override
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception
{
DocumentManagementUploadForm form = (DocumentManagementUploadForm)command;
MultipartFile file = form.getFile();
if(null == file)
{
logger.error("No File was uploaded!");
}
else
{
logger.info("Do some stuff with file");
}
return new ModelAndView(getSuccessView());
}
@Override
protected Object formBackingObject(HttpServletRequest request) throws Exception
{
DocumentManagementUploadForm form = new DocumentManagementUploadForm(null);
return form;
}
}
Die Bean
Code:
package de.etss.core.mvc.forms;
import org.springframework.web.multipart.MultipartFile;
public class DocumentManagementUploadForm
{
private MultipartFile file;
public DocumentManagementUploadForm(MultipartFile file)
{
this.file = file;
}
public MultipartFile getFile()
{
return file;
}
public void setFile(MultipartFile file)
{
this.file = file;
}
}
Es funktioniert nur, wenn ich dem Controller den MultiPartResolver injiziere und mir dann darüber das File besorge. Ich würde es aber gerne so wie in der Spring-Doku machen. Vielleicht wißt ihr ja eine Lösung.
Grüße,
Peter