Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Problema em URL com s:mvcUrl

Olá galera, Tenho em meu JSP o seguinte trecho:

<a href="${s:mvcUrl('CCC#itens').build() }" rel="nofollow">
                                Carrinho (${carrinhoCompras.quantidade })
                            </a>

No entanto no momento que clico no Carrinho está com um redirecionamento sem sentido, conforme abaixo, onde na verdade o caminho correto é http://localhost:8080/casadocodigo/WEB-INF/views/carrinho/itens.jsp

http://localhost:8080/casadocodigo/WEB-INF/views/produtos/detalhe.jsp/carrinho

Fiz um teste colocando a URL manualmente e funcionou normalmente, mas não é uma boa prática.

2 respostas

Posta o JSP inteiro junto com o controller, por favor

JSP que chama o controller, através do link Carrinho.

<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>
@Controller controller
@RequestMapping("/carrinho") 
@Scope(value=WebApplicationContext.SCOPE_REQUEST) 
public class CarrinhoComprasController {


    @Autowired
    private ProdutoDAO produtoDao;

    @Autowired
    private CarrinhoCompras carrinho;


    @RequestMapping(method=RequestMethod.GET)
    public ModelAndView itens(){
        return new ModelAndView("carrinho/itens");
    }


    @RequestMapping("/add")
    public ModelAndView add(Integer produtoId, TipoPreco tipoPreco) {


        ModelAndView modelAndView = new ModelAndView("redirect:/carrinho");//No frontend code 202 o carrinho redireciona para a raiz desse controller / carrinho que procura o metodo GET
        CarrinhoItem carrinhoItem = criaItem(produtoId,tipoPreco);


        carrinho.add(carrinhoItem);


        return modelAndView;

    }

    private CarrinhoItem criaItem(Integer produtoId, TipoPreco tipoPreco) {


        Produto produto = produtoDao.procurar(produtoId);


        CarrinhoItem carrinhoItem = new CarrinhoItem(produto, tipoPreco);

        return carrinhoItem;

    }

    @RequestMapping("/remover")
    public ModelAndView remover(Integer produtoId, TipoPreco tipoPreco) {
        carrinho.remover(produtoId, tipoPreco);
        return new ModelAndView("redirect:/carrinho");
    }


}