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

HTTP Status 404 - Not Found

Realizei todos os procedimentos conforme a aula porém ao clicar no botão comprar do carrinho surge o seguinte erro: HTTP Status 404 - Not Found

7 respostas

Type Status Report

Description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).

Esse é o meu CarrinhoComprasController:

package br.com.casadocodigo.loja.controllers;

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;

import br.com.casadocodigo.loja.daos.ProdutoDAO; import br.com.casadocodigo.loja.models.CarrinhoCompras; import br.com.casadocodigo.loja.models.CarrinhoItem; import br.com.casadocodigo.loja.models.Produto; import br.com.casadocodigo.loja.models.TipoPreco;

@Controller @RequestMapping("casadocodigo/carrinho") public class CarrinhoComprasController {

@Autowired
private ProdutoDAO produtoDAO;

@Autowired
private CarrinhoCompras carrinho;

@RequestMapping("/add")
public ModelAndView add(Integer produtoId, TipoPreco tipoPreco) {
    System.out.println("inserido");
     ModelAndView modelAndView = new ModelAndView("redirect:produtos");
     CarrinhoItem carrinhoItem = criaItem(produtoId, tipoPreco);
      carrinho.add(carrinhoItem);

     return modelAndView;
}

private CarrinhoItem criaItem(Integer produtoId, TipoPreco tipoPreco) {
    Produto produto = produtoDAO.find(produtoId);
    CarrinhoItem  carrinhoItem = new CarrinhoItem(produto, tipoPreco);
    return carrinhoItem;
}

}

Meu appWebConfiguration:

package br.com.casadocodigo.loja.conf;

import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.support.ReloadableResourceBundleMessageSource; import org.springframework.format.datetime.DateFormatter; import org.springframework.format.datetime.DateFormatterRegistrar; import org.springframework.format.support.DefaultFormattingConversionService; import org.springframework.format.support.FormattingConversionService; import org.springframework.web.multipart.MultipartResolver; import org.springframework.web.multipart.support.StandardServletMultipartResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.view.InternalResourceViewResolver;

import br.com.casadocodigo.loja.controllers.HomeController; import br.com.casadocodigo.loja.daos.ProdutoDAO; import br.com.casadocodigo.loja.infra.FileSaver; import br.com.casadocodigo.loja.models.CarrinhoCompras;

@EnableWebMvc @ComponentScan(basePackageClasses = { HomeController.class, ProdutoDAO.class, FileSaver.class, CarrinhoCompras.class }) public class AppWebConfiguration {

@Bean
public InternalResourceViewResolver internalResourceViewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/views/");
    resolver.setSuffix(".jsp");

    return resolver;
}

@Bean
public MessageSource messageSource() {
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("/WEB-INF/messages");
    messageSource.setDefaultEncoding("UTF-8");
    messageSource.setCacheSeconds(1);

    return messageSource;
}

@Bean
public FormattingConversionService mvcConversionService() {
    DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();
    DateFormatterRegistrar registrar = new DateFormatterRegistrar();
    registrar.setFormatter(new DateFormatter("dd/MM/yyyy"));
    registrar.registerFormatters(conversionService);

    return conversionService;
}

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

}

Meu forme:

  • <c:forEach items="${produto.precos }" var="preco">
  • ${preco.tipo } R$ 39,90

    ${preco.valor }

            <button type="submit" class="submit-image icon-basket-alt" alt="Compre agora" title="Compre agora '${produto.titulo }'!">Botão</button>

        </form>

Galera, encontrei o erro, o problema não estava no Controller, estava no meu formulário.

Olá Paulo!

Qual foi o erro que você encontrou?

solução!

O Form não estava enviando o id do produto. Eu corrigi a linha do código e funcionou. Ficou assim:

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software