2
respostas

mvcUrl no itens.jsp manda pra URL estranha

Por algum motivo quando clico nos comandos action para finalizar uma compra de um carrinho ou para excluir um item no carrinho de compras no jsp "itens.jsp" da aula 14 do Spring MVC1 sou encaminhado pras Urls: "http://localhost:8080/casadocodigospring/WEB-INF/views/carrinho/itens.jsp/pagamento/finalizar" e "http://localhost:8080/casadocodigospring/WEB-INF/views/carrinho/itens.jsp/carrinho/remover?produtoId=5&tipoPreco=IMPRESSO" respectivamente. A única diferença do meu projeto pro do professor, imagino eu, é o nome (que da pra perceber pela URL). Gostaria que alguém me explicasse o porque de isso estar acontecendo. Meu itens.jsp:

<%@ 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" prefix="s"%>

<!DOCTYPE html>
<html>
<head>

<c:url value="/" var="contextPath" />
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport"
    content="width=device-width, initial-scale=1, maximum-scale=1" />

<title>Livros de Java, SOA, Android, iPhone, Ruby on Rails e
    muito mais - Casa do Código</title>

</head>
<body>

    <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="${s:mvcUrl('CCC#itens').build() }"
                            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>

    <section class="container middle">
        <h2 id="cart-title">Seu carrinho de compras</h2>
        <table id="cart-table">
            <colgroup>
                <col class="item-col" />
                <col class="item-price-col" />
                <col class="item-quantity-col" />
                <col class="line-price-col" />
                <col class="delete-col" />
            </colgroup>
            <thead>
                <tr>
                    <th class="cart-img-col"></th>
                    <th width="65%">Item</th>
                    <th width="10%">Preço</th>
                    <th width="10%">Quantidade</th>
                    <th width="10%">Total</th>
                    <th width="5%"></th>
                </tr>
            </thead>
            <tbody>
                <c:forEach items="${carrinhoCompras.itens }" var="item">
                    <tr>
                        <td class="cart-img-col"><img
                            src="http://cdn.shopify.com/s/files/1/0155/7645/products/css-eficiente-featured_large.png?v=1435245145"
                            width="71px" height="100px" /></td>
                        <td class="item-title">${item.produto.titulo }</td>
                        <td class="numeric-cell">${item.preco }</td>
                        <td class="quantity-input-cell"><input type="number" min="0"
                            id="quantidade" name="quantidade"
2 respostas

Oi Guilherme

Esse problema está sendo constante mesmo, é causado por conta de ter o Spring Security ativado e parece ser um bug na própria lib do Spring.

Confirma pra mim se você está usando: jdk 1.7, spring 4.1.0, jpa 2.1, hibernate 4.3.0, mysql connector 5.1.5, tomcat 7.3.0.

Um aluno diz ter conseguido resolver esse problema no tópico abaixo: https://cursos.alura.com.br/forum/topico-para-quem-esta-com-problema-ao-acessar-alguma-pagina-s-mvcurl-82509

Uma solução de contorno é parar de usar o mvcUrl, daria para construir os links dessa forma, por exemplo:

<form action="carrinho/remover/${item.produto.id}/${item.tipoPreco}" method="post">

As versões minhas são um pouco diferentes pq eu já tinha outro mysql, usei o Wildfly 18 e tive problemas com hibernate. Meu JDK é o 1.8. O meu POM, depois q mudei como no link, não consertou, acho q não é problema de acesso e sim na geração do link.

Obs: Consegui resolver da forma que vc falou, sem usar o mvcUrl, mas queria corrigir isso pra quando eu precisar usar. Será que com isso marco como solucionado ou espero a outra resposta?

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.3.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>4.0.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
            <version>4.0.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>4.0.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>4.0.0.RELEASE</version>
        </dependency>
        <!-- Até aqui -->
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-servlet-api</artifactId>
            <version>7.0.30</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl-api</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.glassfish.web</groupId>
            <artifactId>jstl-impl</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.6.1</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.1</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.1.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.1.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.1-api</artifactId>
            <version>1.0.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>4.3.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.0.0.GA</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>4.2.0.Final</version>
        </dependency>

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