1
resposta

HTTP Status 400 – Bad Request. Olá galera me ajude por favor

package br.com.casadocodigo.loja.controllers;

import java.util.List;

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.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import br.com.caelum.loja.infra.FileSaver; import br.com.casadocodigo.loja.daos.ProdutoDAO; import br.com.casadocodigo.loja.models.Produto; import br.com.casadocodigo.loja.models.TipoPreco; import br.com.casadocodigo.loja.validation.ProdutoValidation;

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

@Autowired
private ProdutoDAO produtoDao;

 @Autowired
    private FileSaver fileSaver;

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.addValidators(new ProdutoValidation());
}


@RequestMapping("/form")
public ModelAndView form(Produto produto) {
    ModelAndView modelAndView = new ModelAndView("produtos/form");
    modelAndView.addObject("tipos", TipoPreco.values());
    return modelAndView;
}

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

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

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

    produtoDao.gravar(produto);
    redirectAttributes.addFlashAttribute("Sucesso", "Produto cadastrado com sucesso!");
    return new ModelAndView("redirect:produtos");
}

@RequestMapping(method = RequestMethod.GET)
public ModelAndView listar() {
    List<Produto> produtos = produtoDao.listar();
    ModelAndView modelAndView = new ModelAndView("/produtos/lista");
    modelAndView.addObject("produtos", produtos);
    return modelAndView;
}
@RequestMapping("/detalhe/{id")
public ModelAndView detalhe(@PathVariable("id")Integer id){

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

    return modelAndView;
}
1 resposta

package br.com.casadocodigo.loja.daos;

import java.util.List;

import javax.persistence.EntityManager; import javax.persistence.PersistenceContext;

import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional;

import br.com.casadocodigo.loja.models.Produto;

@Repository @Transactional public class ProdutoDAO {

@PersistenceContext
private EntityManager manager;

public void gravar(Produto produto) {
    manager.persist(produto);

}

public List<Produto> listar() {
    return manager.createQuery("select p from Produto p", Produto.class)
            .getResultList();
}
public Produto find(Integer id) {
    return manager.createQuery("select distinct(p) from Produto p " + 
        "join fetch p.precos preco where p.id = :id", Produto.class)
            .setParameter("id", id).getSingleResult();
}

} package br.com.casadocodigo.loja.daos;

import java.util.List;

import javax.persistence.EntityManager; import javax.persistence.PersistenceContext;

import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional;

import br.com.casadocodigo.loja.models.Produto;

@Repository @Transactional public class ProdutoDAO {

@PersistenceContext
private EntityManager manager;

public void gravar(Produto produto) {
    manager.persist(produto);

}

public List<Produto> listar() {
    return manager.createQuery("select p from Produto p", Produto.class)
            .getResultList();
}
public Produto find(Integer id) {
    return manager.createQuery("select distinct(p) from Produto p " + 
        "join fetch p.precos preco where p.id = :id", Produto.class)
            .setParameter("id", id).getSingleResult();
}

}