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

${s:mvcUrl('CCC#remover').arg(0,item.produto.id).arg(1, item.tipoPreco).build()}

Estou com um problema de conversão para montar a url:

javax.el.ELException: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type @org.springframework.web.bind.annotation.PathVariable java.lang.Integer to type java.lang.String

Aqui está o trecho de jsp:

        <table>
            <tr>
                <td>id</td>                
                <td>Titulo</td>
                <td>Descrição</td>
                <td>Páginas</td>
            </tr>

            <c:forEach items="${produtos}" var="produto" >
                <tr>
                    <td>${produto.id}</td>
                    <td><a href="${s:mvcUrl('PC#detalhe').arg(0, produto.id).build()}">${produto.titulo}</a></td>
                    <td>${produto.descricao }</td>
                    <td>${produto.paginas }</td>
                </tr>

            </c:forEach>
        </table>

e aqui no controller

    @RequestMapping("/detalhe/{id}")
    public ModelAndView detalhe(@PathVariable("id") Integer id) {
        ModelAndView modelAndView = new ModelAndView("/produtos/detalhe");
        Produto produto = produtoRepository.find(id);
        modelAndView.addObject("produto", produto);
        return modelAndView;
    }

A sensação que ele esta trazendo o produto.id como String meu parâmetro é Integer. Acredito que está igualzinho da aula.

*Já parei o servidor, limpei e nada. Preciso de ajuda. Obrigado

Se jogar a url (http://localhost:8080/casadocodigo/produtos/detalhe/4) no browser funciona

7 respostas

o probema está nisso:

<td><a href="${s:mvcUrl('PC#detalhe').arg(0,produto.id).build()}">${produto.titulo}</a></td>

porque se uso dessa forma:

<td><a href='<c:url value="produtos/detalhe/${produto.id}"/>'>${produto.titulo}</a></td>

funciona, mas agora no remover preciso usar o .arg devido aos parametros e o problema persiste

<form action="${s:mvcUrl('CCC#remover').arg(0,item.produto.id).arg(1, item.tipoPreco).build()}" method="post">

aguardo (vi outros dois topicos sem solução para o mesmo problema)

Obrigado

Oi Fred, não vou negar, não vi o erro... rola você compartilhar o código no github para eu poder baixar e rodar? Preciso investigar mais.

Alberto segue o codigo no git:

https://github.com/frcunha/casadocodigo

detalhe estou usando postgres 9.6

tomcat 7.0.78

Aguardo obrigado

Opa, baixei o código e deu o mesmo erro que você tava tomando... Pesquisei, tentei aqui e não descobri o erro.. não consegui ver a diferença entre a sua versão e a minha :(. Vou continuar procurando e, se eu achar, volto a postar aqui. Foi mal :(.

Já gastei um tempo googlando e nada.... preciso da ajudar dos feras ai. E já na primeira aula do segundo modulo ta la <a href="${s:mvcUrl('PC#detalhe').arg(0,produto.id).build()}">${produto.titulo}</a> na home.jsp, tá ficando difícil seguir com o curso. Aguardo e obrigado

Alberto ou alguém to sem solução..... aguardo e obrigado

solução!

Oi Fred, não descobri mesmo.. minha sugestão é que você monte a url na mão, todas podem ser montadas e continue o curso. Essa não é uma feature killer, apenas uma função legal.. tenha em mente que você não muda urls da sua aplicação com frequência, então não é algo para ficar super preocupado.

Aqui um exemplo:

${s:mvcUrl('CCC#remover').arg(0,item.produto.id).arg(1, item.tipoPreco).build()}

poderia ficar:

<c:url value="/carrinho/remove/${produto.id}/${item.tipoPreco}"/>