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
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;
}
e il codice della servlet:
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);
Qualcuno mi sa dire se c'è qualche errore madornale che ho fatto o se non ho capito nulla sui bean statful?????
ciao e grazie