Visualizzazione dei risultati da 1 a 7 su 7

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    31
    Il vettore è inizializzato molto semplicemente nella servlet1; questo è il doGet:

    Vector<Cliente> clienti = new Vector<Cliente>();
    Cliente cliente1=new Cliente(1,"marrrio","rossi");
    Cliente cliente2=new Cliente(2,"mario","rossi");
    Cliente cliente3=new Cliente(3,"marioooo","rossi");
    clienti.add(cliente1);
    clienti.add(cliente2);
    clienti.add(cliente3);


    request.setAttribute("clienti", clienti);
    request.getRequestDispatcher("cliente.jsp").forwar d(request, response);



    A questo punto cliente.jsp mostra sul browser la tabella, e cliccando su uno dei link Elimina devo cancellare il corrispondente cliente.
    Quindi il forward deve essere fatto di nuovo a cliente.jsp...quando ho provato però mi indirizzava in una pagina bianca del browser; beh chiaramente sbaglio il codice, ne sono consapevole.
    Pur vergognandomi, questo è quello che ho scritto:

    String parametro=request.getParameter("id"); //per prendere l'id dalla jsp

    Vector<Cliente> clienti = new Vector<Cliente>();
    boolean esito;
    for (Cliente cliente:clienti){
    int id=cliente.getId();
    String s = Integer.toString (id);

    if(parametro.equals(s)){

    esito=clienti.removeElement(cliente);
    if(esito)

    request.getRequestDispatcher("cliente.jsp").forwar d(request, response);
    }}

    Forse si evince che non conosco bene neppure java.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da cri43 Visualizza il messaggio
    Il vettore è inizializzato molto semplicemente nella servlet1;
    E nella servlet2? Viene ricreato questo Vector? Perché visto che il Vector lo metti nel request scope, una volta terminato il ciclo di questa request/response verso il client .... il tuo oggetto Vector sparisce completamente!

    Quote Originariamente inviata da cri43 Visualizza il messaggio
    codice:
    String parametro=request.getParameter("id");  //per prendere l'id dalla jsp
        
        Vector<Cliente> clienti = new Vector<Cliente>();
                boolean esito;
                for (Cliente cliente:clienti){
                            int id=cliente.getId();
            String s = Integer.toString (id);
    
            if(parametro.equals(s)){
                    
                    esito=clienti.removeElement(cliente);
                    if(esito)
                    
                request.getRequestDispatcher("cliente.jsp").forward(request, response);
    }}
    Visto che il id del cliente è un int, sarebbe più ragionevole e sensato effettuare il parsing del parametro, ottenere un int e poi confrontare int ... non confrontare stringhe!

    C'è comunque anche un altro problema: se stai iterando sui clienti, non puoi usare removeElement sulla collezione mentre stai iterando sulla collezione stessa! In questi casi meglio usare il Iterator esplicitamente e usare il suo remove() (non i remove della collezione).

    Ma il punto comunque non sono questi aspetti .... ma proprio la gestione del Vector.

    Quote Originariamente inviata da cri43 Visualizza il messaggio
    Forse si evince che non conosco bene neppure java.
    Il problema (lo dico senza voler criticare) è che arrivare a Servlet/JSP senza avere le idee chiare su Java ..... questo sì che è un bel problema.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.