Olá
Não estou conseguindo renderizar a lista do carrinho de compras, já verifiquei que consigo inserir o livro no carrinho, porém após o redirect, o carrinho fica vazio.
Segue abaixo o meu código
@Model
public class CarrinhoComprasBean {
private Integer id;
@Inject
private LivroDao dao;
@Inject
private CarrinhoCompras carrinho;
public String add(Integer id) {
Livro livro = dao.buscarPorId(id);
CarrinhoItem item = new CarrinhoItem(livro);
carrinho.add(item);
System.out.println(carrinho.getItens().size());
return "carrinho?faces-redirect=true";
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public LivroDao getDao() {
return dao;
}
public void setDao(LivroDao dao) {
this.dao = dao;
}
public CarrinhoCompras getCarrinho() {
return carrinho;
}
public void setCarrinho(CarrinhoCompras carrinho) {
this.carrinho = carrinho;
}
public List<CarrinhoItem>getItens(){
return carrinho.getItens();
}
}
@Named
@SessionScoped
public class CarrinhoCompras implements Serializable {
private static final long serialVersionUID = 1L;
private Set<CarrinhoItem> itens = new HashSet<>();
public void add(CarrinhoItem item) {
itens.add(item);
}
public List<CarrinhoItem> getItens() {
return new ArrayList<CarrinhoItem>(itens);
}
}
public class CarrinhoItem {
private Livro livro;
private Integer quantidade;
public CarrinhoItem(Livro livro) {
this.livro = livro;
this.quantidade = 1;
}
public Livro getLivro() {
return livro;
}
public void setLivro(Livro livro) {
this.livro = livro;
}
public Integer getQuantidade() {
return quantidade;
}
public void setQuantidade(Integer quantidade) {
this.quantidade = quantidade;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((livro == null) ? 0 : livro.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
CarrinhoItem other = (CarrinhoItem) obj;
if (livro == null) {
if (other.livro != null)
return false;
} else if (!livro.equals(other.livro))
return false;
return true;
}
@Override
public String toString() {
return "CarrinhoItem [livro=" + livro.getTitulo() + ", quantidade=" + quantidade + "]";
}
}