Spring MVC MultiPart-FileUpload funktioniert nicht

pizza1234

Erfahrenes Mitglied
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:
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
 
Hi Olli,
das hab ich auch schon versucht, geht aber auch nicht.
Außerdem will ich das MultiPartFile so, wie es ist und nicht erst einen PropertyEditor registrieren.

Grüße
Peter
 
Zurück