1
resposta

Spring MVC - Erro ao ejnviar arquivo

Fiz todos os passos , porém ao tentar salvar o livro com sumário retorna o erro abaixo:

HTTP Status 500 - Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided
type Exception report

message Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided

description The server encountered an internal error that prevented it from fulfilling this request.

--
Alterações Form

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8>
<title>Livros de Java, Android, iphone, Ryby, PHP e muito mais - Casa do Código</title>
</head>
<body>
    <form:form action="${s:mvcUrl('PC#gravar').build() }" method="post" commandName="produto" enctype="multipart/form-data">
        <div>
            <label>Título</label>
            <form:input path="titulo" />
            <form:errors path="titulo" />
        </div>
        <div>
            <label>Descrição</label>
            <form:textarea rows="10" cols="20" path="descricao" />
            <form:errors path="descricao" />
        </div>
        <div>
            <label>Páginas</label>
            <form:input path="paginas" />
            <form:errors path="paginas" />
        </div>

        <div>
            <label>Data de Lançamento</label>
            <form:input path="dataLancamento" />
            <form:errors path="dataLancamento"/>
        </div>

        <c:forEach items="${tipos}" var="tipoPreco" varStatus="status">
        <div>
            <label>${tipoPreco}</label>
            <form:input path="precos[${status.index}].valor" />
            <form:hidden path="precos[${status.index}].tipo" value="${tipoPreco}" />
        </div>
    </c:forEach>
<div>
            <label>Sumário</label>
            <input name="sumario" type="file">
        </div>

        <button type="submit">Cadastrar</button>
       </form:form>

</body>
</html>
----
Produto Controller
---
@RequestMapping(method=RequestMethod.POST)
    public ModelAndView gravar(MultipartFile sumario, @Valid Produto produto, BindingResult result, RedirectAttributes redirectAttributes){

        System.out.println(sumario.getOriginalFilename());

        if(result.hasErrors()){
            return form(produto);
        }

        produtoDao.gravar(produto);
        redirectAttributes.addFlashAttribute("sucesso", "Produto cadastrado com sucesso.");
        return new ModelAndView("redirect:produtos");

    }

---
AppWebConfigurantion
---

    @Bean
    public MultipartResolver multipartResolver(){
        return new StandardServletMultipartResolver();

    }

----
ServletSpringMVC
---
@Override
    protected void customizeRegistration(Dynamic registration) {
        registration.setMultipartConfig(new MultipartConfigElement(""));
    }

----
Produto
----
private String sumarioPath;

public String getSumarioPath() {
        return sumarioPath;
    }
    public void setSumarioPath(String sumarioPath) {
        this.sumarioPath = sumarioPath;
    }
----
1 resposta

Fala Sheila, tudo bem ?

Não consegui ver algo errado nos códigos de configuração, embora, a exception esteja sugerindo isso. Precisaria ver o funcionamento do projeto localmente pra analisar melhor. Você pode compartilhar um link no github ou outro repositório com o código do projeto ?

Abraço!