Durante o curso foi implementado o recurso para remover produtos da lista, então no momento funcionou muito bem. Depois que foi modificado a forma de manipulação do dao não consigo mais remover produtos da lista. está apresentando o seguinte erro:
HTTP Status 405 -
type Status report
message
description The specified HTTP method is not allowed for the requested resource.
Apache Tomcat/8.0.28
{Console}
Failed to load resource: the server responded with a status of 405 (Method Not Allowed)
{ProdutoController}
package br.com.caelum.vraptor.controller;
import java.util.List;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.validation.Valid;
import br.com.caelum.vraptor.Controller;
import br.com.caelum.vraptor.Delete;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.dao.ProdutoDao;
import br.com.caelum.vraptor.util.JPAUtil;
import br.com.caelum.vraptor.validator.Validator;
import br.com.caelum.vraptor.view.Results;
import br.com.caelum.vraptor.model.Produto;
@Controller
public class ProdutoController {
private final Result result;
private final ProdutoDao dao;
private final Validator validator;
@Inject
public ProdutoController(Result result, ProdutoDao dao, Validator validator) {
this.result = result;
this.dao = dao;
this.validator = validator;
}
public ProdutoController() {
this(null, null, null);
}
@Get("/")
public void inicio() {
}
@Get
public void lista(){
result.include("produtoList", dao.lista());
}
@Get
public void listaXML(){
result.use(Results.xml()).from(dao.lista()).serialize();
}
@Get
public void listaJSON(){
result.use(Results.json()).from(dao.lista()).serialize();
}
@Post
public void adiciona(@Valid Produto produto) {
validator.onErrorForwardTo(this).formulario();
dao.adiciona(produto);
result.include("mensagem","Produto Adicionado com Sucesso");
result.redirectTo(this).lista();
}
@Get
public void sobre() {
}
@Get
public void formulario() {
}
@Post
public void remove(Produto produto){
dao.remove(produto);
result.include("mensagem","Produto Removido com Sucesso");
result.redirectTo(this).lista();
}
}
{ProdutoDao}
package br.com.caelum.vraptor.dao;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import br.com.caelum.vraptor.model.Produto;
@RequestScoped
public class ProdutoDao {
private final EntityManager em;
@Inject
public ProdutoDao(EntityManager em) {
this.em = em;
}
public ProdutoDao() {
this(null);
}
public void adiciona(Produto produto) {
em.persist(produto);
}
public void remove(Produto produto) {
em.remove(busca(produto));
}
public Produto busca(Produto produto) {
return em.find(Produto.class, produto.getId());
}
@SuppressWarnings("unchecked")
public List<Produto> lista() {
return em.createQuery("select p from Produto p").getResultList();
}
}