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

404 - The origin server did not find [...]

Ao clicar em comprar recebo o seguinte erro 404:

The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Já tentei de tudo...

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

    @Autowired
    private ProdutoDAO produtoDAO;

    @Autowired
    private CarrinhoCompras carrinho;

    @RequestMapping("/add")
    public ModelAndView add(Integer produtoId, TipoPreco tipo) {
        ModelAndView modelAndView = new ModelAndView("redirect:/produtos");
        CarrinhoItem carrinhoItem = criaItem(produtoId, tipo); 

        carrinho.add(carrinhoItem);

        return modelAndView; 
    }

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

        return carrinhoItem;
    }

}

e o meu detalhe.jsp


<body class="produto">

    <header id="layout-header">
        <div class="clearfix container">
            <a href="/" id="logo"> </a>
            <div id="header-content">
                <nav id="main-nav">
                    <ul class="clearfix">
                        <li><a href="/carrinho" rel="nofollow">Carrinho
                                (${carrinhoCompras.quantidade })</a></li>
                        <li><a href="/pages/sobre-a-casa-do-codigo" rel="nofollow">Sobre
                                Nós</a></li>
                        <li><a href="/pages/perguntas-frequentes" rel="nofollow">Perguntas
                                Frequentes</a></li>
                    </ul>
                </nav>
            </div>
        </div>
    </header>
    <nav class="categories-nav">
        <ul class="container">
            <li class="category"><a href="http://www.casadocodigo.com.br">Home</a></li>
            <li class="category"><a href="/collections/livros-de-agile">
                    Agile </a></li>
            <li class="category"><a href="/collections/livros-de-front-end">
                    Front End </a></li>
            <li class="category"><a href="/collections/livros-de-games">
                    Games </a></li>
            <li class="category"><a href="/collections/livros-de-java">
                    Java </a></li>
            <li class="category"><a href="/collections/livros-de-mobile">
                    Mobile </a></li>
            <li class="category"><a
                href="/collections/livros-desenvolvimento-web"> Web </a></li>
            <li class="category"><a href="/collections/outros"> Outros </a></li>
        </ul>
    </nav>

    <article id="${produto.id }">
        <header id="product-highlight" class="clearfix">
            <div id="product-overview" class="container">
                <img width="280px" height="395px"
                    src="http://cdn.shopify.com/s/files/1/0155/7645/products/css-eficiente-featured_large.png?v=1435245145"
                    class="product-featured-image" />

                <h1 class="product-title">${produto.titulo }</h1>

                <p class="product-author">
                    <span class="product-author-link"> </span>
                </p>

                <p class="book-description">${produto.descricao }</p>

            </div>
        </header>

        <section class="buy-options clearfix">
            <form action=<c:url value="/carrinho/add" /> method="post" class="container">
                <input type="hidden" value="${produto.id }" name="produtoId" />
                <ul id="variants" class="clearfix">
                    <c:forEach items="${produto.precos }" var="preco">
                        <li class="buy-option"><input type="radio" name="tipo"
                            class="variant-radio" id="tipo" value="${preco.tipo }"
                            checked="checked" /> <label class="variant-label">
                                ${preco.tipo }</label> <small class="compare-at-price">R$39,90</small>
                            <p class="variant-price">${preco.valor }</p></li>
                    </c:forEach>
                </ul>
                <button type="submit" class="submit-image icon-basket-alt"
                    title="Compre Agora '${produto.titulo }' !"></button>
            </form>

        </section>

        <div class="container">
            <section class="summary">
                <ul>
                    <li><h3> Acesse <a href='/pages/sumario-java8'>aqui </a>o sumário.
                        </h3></li>
                </ul>
            </section>

            <section class="data product-detail">
                <h2 class="section-title">Dados do livro:</h2>
                <p>
                    Número de páginas: <span>${produto.paginas }</span>
                </p>
                <p></p>
                <p>
                    Data de publicação:
                    <fmt:formatDate pattern="dd/MM/yyyy"
                        value="${produto.dataLancamento.time}" />
                </p>
                <p>
                    Encontrou um erro? <a href='/submissao-errata' target='_blank'>Submeta uma errata</a>
                </p>
            </section>
        </div>

    </article>
3 respostas

AppWebConfig

@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");

        resolver.setExposedContextBeanNames("carrinhoCompras");

        return resolver;
    }

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

        return messageSource;
    }

    @Bean
    public FormattingConversionService mvcConvertionService() {
        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();
    }


}

Ele nem sequer chama a função add dentro do CarrinhoComprasController

solução!

Tive que baixar o projeto concluído pra poder seguir com as aulas.. e estava exatamente igual ao meu projeto.. não faço ideia do que ocorreu