This particular exception is caused because Spring MVC apparently needs to create a session during rendering of the view, but couldn't because the response is already committed with the file download. But your real problem is bigger, Spring MVC should not be rendering a view at all.
You need to tell Spring MVC to not render a view after having taken over the control of the HTTP response from Spring MVC. It is otherwise trying to append the rendered view to the end of the HTTP response which would only corrupt the file download.
I don't do Spring MVC, so I can't answer from top of head, but it appears that just returning void
instead of String
from the controller's action method should be sufficient in order to tell Spring MVC to not render a view.