Ciao a tutti, devo implementare un carrello usando i bean stateful ma non riesco a capire come funziona un particolare, ho guardato tutte le guide ma continuo a non capire,
come faccio a differenziare tra i vari utenti la collection<Prodotto> in modo che ogni utente abbia la sua "lista della spesa".
Ora come ora se un utente aggiunge una prodotto al carrello e un altro utente ne aggiunge un altro la lista della spesa è comune ai due e ovviamente non va bene.
il mio programma funziona così:
l'utente da una JSP chiama una servlet addCart che(dopo aver controllato se già esiste in sessione il bean e nel caso lo assegna al bean della servlet) chiama un bean stateful che rappresenta il carrello e ha al suo interno una Collection di prodotto, a questa collection viene aggiunto il prodotto passato dalla servlet.
a questo punto la servlet salva in sessione il bean.
e ritorna sulla jsp.
posto il codice del beans
e il codice della servlet:codice:@Stateful public class carrelloStatefullBean implements carrelloStatefullRemote { private Collection<Acquisto> carrello; private User user; @Override public void addCart(Acquisto acquisto) { this.carrello.add(acquisto); } @Override public Collection<Acquisto> getCarrello() { return carrello; } @Override public User getUser() { return user; } @Override public void setUser(User user) { this.user = user; } @Override public void reset(){ this.carrello.removeAll(carrello); } @PostConstruct public void init() { this.carrello = (Collection<Acquisto>) new ArrayList<Acquisto>(); } @Remove public void remove() { this.carrello = null; }
Qualcuno mi sa dire se c'è qualche errore madornale che ho fatto o se non ho capito nulla sui bean statful?????codice:public class AddCart extends HttpServlet { @EJB private carrelloStatefullRemote carrelloStatefullBean; @EJB private EJBViniServicesRemote eJBViniServicesBean; protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { carrelloStatefullBean = (carrelloStatefullRemote) request.getSession().getAttribute("bean"); int quantitaOrdinata = Integer.parseInt(request.getParameter("quantitaOrdinata")); int idVino = Integer.parseInt(request.getParameter("idVino")); User user = (User) request.getSession().getAttribute("user"); Vino vinoOrdinato = new Vino(); vinoOrdinato = eJBViniServicesBean.findVino(idVino); Acquisto acquisto = new Acquisto(); acquisto.setNumeroBottiglieAcquistate(quantitaOrdinata); acquisto.setVino(vinoOrdinato); carrelloStatefullBean.setUser(user); carrelloStatefullBean.addCart(acquisto); Collection<Acquisto> p = carrelloStatefullBean.getCarrello(); request.getSession().setAttribute("bean", carrelloStatefullBean); RequestDispatcher view = request.getRequestDispatcher("caricaListaVini"); view.forward(request, response);
ciao e grazie

Rispondi quotando