Customizando Carrinho de compras - Dúvida

8 respostas
N

Estou tentando fazer algo similar ao carrinho de compras da fj-28.

No exemplo da apostila, o carrinho de compras dura enquanto o usuário está logado. Para isso, é usada a anotação @SessionScoped.

Para o meu caso, eu preciso de um carrinho que dure menos, em uma sessão eu posso ter vários “carrinhos”. O usuário vai adicionando os itens que ele quer, e quando terminar, manda submeter e o mesmo é finalizado, cadastrado no banco etc. Mas depois o usuário pode, na mesma sessão, criar outros carrinhos de compras.

Como isso pode ser feito? :?:

ValeuW.

8 Respostas

Lucas_Cavalcanti

Crie uma classe @Component @SessionScoped chamada CarrinhosDeCompra, que gerencia vários CarrinhoDeCompra.

Dai é só dar um jeito de identificar qual CarrinhoDeCompra o usuario está usando e pegá-lo no CarrinhosDeCompra.

vc pode dar um nome melhor pra isso =)

[]'s

G

O correto é, ao final da compra, você remover o carrinho de compras da HttpSession.

N

Acho que se eu explicar o meu contexto fica melhor.!

Um dentista faz um orçamento para um cliente. Neste orçamento ele vai selecionar o(s) dente(s) em que será feito tal procedimento. Vai adicionando isso ao orçamento(eu fiz a analogia ao carrinho de compras).
O dentista pode fazer vários orçamentos para vários clientes na mesma sessão, e esses orçamentos serão persistidos.

Quanto à sua dica Lucas, se não for abusar, tem como você postar um exemplo de como ficaria a classe CarrinhosDeCompra?

:slight_smile:

G

Eu criaria um objeto CarrinhoDeCompras e dentro dele uma lista de orçamentos (List ).

Lucas_Cavalcanti

carrinhoDeCompras talvez não seja um bom nome…

o que representa um conjunto de orçamentos para um dentista? ou melhor ainda, o que representa o dia de trabalhos do dentista?

orçamentos diferentes podem ser feitos ao mesmo tempo? se não puderem, talvez nem precise fazer tudo isso, só resetar o orçamento qdo vc terminá-lo, como o garcia-jj já falou.

enfim, vou supor que vc vai chamar de Orcamentos, daí vc pode criar uma classe assim:

@SessionScoped
@Component
public class Orcamentos {

    private Map<Cliente, Orcamento> orcamentos;


    public Orcamento criaOrcamentoPara(Cliente cliente) {...}

    public Orcamento getOrcamentoDo(Cliente cliente) {...} //esse pode ser junto do de cima

    public void salvaOrcamentoDo(Cliente cliente) {...}
}
N

Eu posso usar em uma mesma classe as anotações:
@Component
@SessionScoped
@Entity
@Table(name=“tb_BlaBla”)

?

Lucas_Cavalcanti

pode sim sem problemas, mas geralmente é bom separar as responsabilidades

N

Blz!

É que eu percebi que já tenho uma classe que tem parte da lógica da lista de serviços(vou só aprimorá-la). E essa classe é tbm uma entidade, então pensei em não criar mais classe para não repetir código.

Valews.

Criado 5 de dezembro de 2010
Ultima resposta 6 de dez. de 2010
Respostas 8
Participantes 3