Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Erro na aula 09 - Enviando arquivo ao servidor

Está apresentando o erro abaixo, porém não consigo encontrá-lo: Error creating bean with name 'produtosController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private br.com.casadocodigo.loja.infra.FileSaver br.com.casadocodigo.loja.controllers.ProdutosController.fileSaver; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [br.com.casadocodigo.loja.infra.FileSaver] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

4 respostas

ProdutosController.java

@RequestMapping(method=RequestMethod.POST) public ModelAndView gravar(MultipartFile sumario, @Valid Produto produto,BindingResult result, RedirectAttributes redirectAttributes) {

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

String path = fileSaver.write("arquivos-sumario", sumario); //O Spring enviará o arquivo como um objeto do tipo MultipartFile, chamado de sumario produto.setSumarioPath(path);

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

}

FileSaver.java

public class FileSaver {

@Autowired private HttpServletRequest request;

public String write(String baseFolder, MultipartFile file) { //O local será recebido como String e o arquivo como um objeto MultipartFile try { String realPath = request.getServletContext().getRealPath("/"+baseFolder); String path = realPath + "/" + file.getOriginalFilename(); file.transferTo(new File(path)); //método transferTo é o responsável por transferir o arquivo file para o servidor.

return baseFolder + "/" + file.getOriginalFilename();

} catch (IllegalStateException | IOException e) { throw new RuntimeException(e); } }

}

AppWebConfiguration.java

@ComponentScan(basePackageClasses= {HomeController.class, ProdutoDAO.class, FileSaver.class}) @Bean public MultipartResolver multipartResolver() { return new StandardServletMultipartResolver(); }

solução!

Ola Danila, tudo bem?

Acho que faltou você informar um multipartResolver no AppWebConfiguration.

Além disso o instrutor também cria uma classe FileSaver responsável por processar as informações do arquivo.

Espero ter ajudado.

Consegui. Obrigada!!!

De nada, sempre que precisar não deixe de criar suas dúvidas \o/