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

Dúvida no Ex. 3 da Aula 9 - Url amigáveis

${produto.titulo}

Quando crio a url com o parâmetro tipo 'int' esta dando error de conversão de tipo

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

9 respostas

Oi Paulo,

Poderia colocar o código do controller que está dando esse erro por favor?

Abraço

Controller

import java.util.List; import java.util.UUID;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import br.com.casadocodigo.dao.ProdutoDAO; import br.com.casadocodigo.infra.FileSaver; import br.com.casadocodigo.models.Produto; import br.com.casadocodigo.models.TipoPreco; import br.com.casadocodigo.validation.ProdutoValidation;

@Controller @RequestMapping("/produtos") public class ProdutosController {

@Autowired private ProdutoDAO produtoDao;

@Autowired private FileSaver fileSaver;

@InitBinder public void initBinber(WebDataBinder dataBinder) { dataBinder.addValidators(new ProdutoValidation()); }

@RequestMapping("/form") public ModelAndView form(Produto produto) { TipoPreco[] tipoPrecos = TipoPreco.values();

ModelAndView modelAndView = new ModelAndView("produtos/form"); modelAndView.addObject("tipos", tipoPrecos); return modelAndView; }

@RequestMapping(method = RequestMethod.POST) public ModelAndView gravar(MultipartFile sumario, @Valid Produto produto, BindingResult result, RedirectAttributes redirectAttributes) {

System.out.println(sumario.getOriginalFilename());

String sumarioPath = fileSaver.write("arquivos-sumario", sumario); produto.setSumarioPath(sumarioPath); if (result.hasErrors()) { return form(produto); }

produtoDao.gravar(produto);

redirectAttributes.addFlashAttribute("sucesso", "Produto cadastrado com sucesso!");

return new ModelAndView("redirect:produtos"); }

@RequestMapping(method = RequestMethod.GET) public ModelAndView lista() {

List produtos = produtoDao.listar(); ModelAndView modelAndView = new ModelAndView("produtos/lista"); modelAndView.addObject("produtos", produtos); return modelAndView; }

@RequestMapping( value = "/detalhe/{id}", method = RequestMethod.GET) public ModelAndView detalhe(@PathVariable("id") int id){

Produto produto = produtoDao.find(id); ModelAndView modelAndView = new ModelAndView("produtos/detalhe"); modelAndView.addObject("produto", produto); return modelAndView; 
}
}

O erro esta ocorrendo quando eu acesso http://localhost:8081/casadocodigo/produtos/

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>

Lista de Produtos
${sucesso }
${falha }
Id    Titulo    Descrição    Páginas
${produto.id } ${produto.titulo} ${produto.descricao }${produto.paginas }

Oi Paulo, você já tentou com Integer?

Lembro de ter tido um problema parecido com primitivos. Não lembro ao certo. Mas vamos ver se isso resolver.

Abraço

Já tentei com Integer e com int, só esta funcionando quando coloco String

Paulo, isso é bem estranho mesmo.

Pois acessando http://localhost:8081/casadocodigo/produtos/ não deveria gerar erro uma vez que não está acessando o método que possui o PathVariable.

E quando você acessa o método do pathvariable com um ID válido o que acontece?

Exemplo: http://localhost:8081/casadocodigo/produtos/detalhe/ID

solução!

Conseguir resolver, Muito obrigado

Oi Paulo, como resolveu? Só pra saber qual era mesmo o problema.

Foi alguma coisa que estava no jsp, não sei o certo o que foi, pois criei um nova jsp, então tudo funcionou normalmente.

Ah ok. Que bom que resolveu então.

Abraço