Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    JSP JAva bean passaggio parametri

    Salve mi chiamo Francesco, forse qualcuno puo aiutarmi, devo passare dei parametri da una pagina ad un altra.
    Questi paramentri sono generati chiamando un DAO

    codice:
    idraulicoDAO listaDAO = new idraulicoDAO();
            ListaProdBean listapr = listaDAO.listapr();
            
            for(prodotto p : listapr.ListaP())
            {
              String code = p.getCodice();
              String descrizione = p.getDescrizione();
              int prezzo = p.getPrezzo();
              int quantD = p.getQuantDisp();
              String quantA = p.getQuantDaAcq();
             out.println("<tr><td>"+code+"</td><td>"+descrizione+"</td><td>"+prezzo+"</td><td>"+quantD+"</td><td><input type=\"text\" name=\"acquisto\" value=\" "+ quantA +" \"/></td></tr>");
    e generano questa tabella
    r0.JPG


    Se notate nell'ultima cella della tabella c'è un input text dove io inserisco il nuovo valore e poi nella pagina successiva mi da la stessa ricerca meno i valori che non ho riempito(erano preimpostati a Zero).

    quando premo invio nel submit il form invia questo url
    codice:
    http://localhost:8084/Idraulico/viewRiepilogo.jsp?acquisto=12&acquisto=3&acquisto=34&acquisto=44&acquisto=3&acquisto=+0+&acquisto=+0+&acquisto=+0+
    ma nella nuova pagina l cui codice è questo
    codice:
      <%
        
                
            idraulicoDAO listaDAO = new idraulicoDAO();
            ListaProdBean listapr = listaDAO.listapr();
            for(prodotto p : listapr.ListaP())
            {
            int numA =Integer.parseInt(request.getParameter("acquisto"));
            if( numA != 0 )
            {
            
            
              String code = p.getCodice();
              String descrizione = p.getDescrizione();
              int prezzo = p.getPrezzo();
              int quantD = p.getQuantDisp();   
              String quantA = request.getParameter("acquisto");
             out.println("<tr><td>"+code+"</td><td>"+descrizione+"</td><td>"+prezzo+"</td><td>"+quantD+"</td><td>"+ quantA +"</td></tr>");      
            }       
            }  
       
            %>
    succede questo
    r1.JPG

    ovvero riempie solo il primo e tutti gli altri con il primo valore...come posso passare i dati da un jsp ad un altro avendo una tabella valori diversi appartenenti allo stesso parametro?? nel nostro caso "acquista"

    Vi ringrazio in anticipo

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Ok, andiamo per ordine.

    Innanzitutto dalle immagini che hai postato si vedono 8 righe di dati. Sono quindi pochi, pertanto in teoria potrebbe anche aver senso passarli in query string. Ma se hai anche solo la minima idea che il numero di dati possa poi aumentare ... 30 ... 50 ... 100 righe, allora non puoi più passarli in query string, non sarebbe una buona cosa. La richiesta dovresti farla come POST invece che come GET. Quindi orientati verso il submit con POST in generale.

    Seconda cosa: il getParameter prende un solo valore (il primo) anche a fronte di più valori associati allo stesso nome. Esiste getParameterValues(String name) ma ci sono comunque delle questioni che devi considerare nel tuo caso.
    In generale non è buona cosa affidarsi alla sequenza dei valori ma poi c'è un'altra questione ancora più importante: come associ i valori ai code?

    Per farla breve, dovresti cercare di associare i valori ai code facendo generare parametri del tipo:

    qta001=12
    qta002=3
    ....

    O anche senza "qta" come prefisso (è solo una qualifica in più, nel caso dovessi avere anche altre tipologie di parametri) .. puoi scegliere tu! In questo modo, nella seconda pagina a fronte di un prodotto puoi comporre il nome e prendere direttamente il valore per quel code.


    Per finire, ti segnalo (e senza voler criticare o sminuire quanto stai svolgendo) che il modo di utilizzo delle JSP che stai facendo è parecchio dispersivo e inappropriato. Naturalmente posso pensare e capire che magari sei agli inizi .. non hai altre nozioni sufficienti, ecc... Quindi te l'ho detto giusto perché tu lo sappia.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Innanzitutto ti ringrazio di cuore per i tuoi consigli, per me sono davvero preziosi.
    Si sono all'inizio e questo è il primo ostacolo serio che ho incontrato

    Quote Originariamente inviata da andbin Visualizza il messaggio
    come associ i valori ai code?
    Per farla breve, dovresti cercare di associare i valori ai code facendo generare parametri del tipo:
    qta001=12
    qta002=3
    ....
    O anche senza "qta" come prefisso (è solo una qualifica in più, nel caso dovessi avere anche altre tipologie di parametri) .. puoi scegliere tu! In questo modo, nella seconda pagina a fronte di un prodotto puoi comporre il nome e prendere direttamente il valore per quel code.
    il problema è questo, sia la prima figura che la seconda ricevono i dati direttamente dal database.

    i dati nel database non devono(per il momento) venire toccati devono solo mostrarsi nelle views, l'unica cosa che cambia è nella visualizzazione della seconda view dove si vedono i dati messi nella textfield della view precedente, tutte le operazioni devono venire a livello di bean e di sessione non di DB.

    Il problema è proprio quello, come faccio a passare una sorta di array di stringhe da una view ad un altra passando solo per il bean di sessione e senza toccare il db, accade esattamente come dici tu, il request.getParameter() sta passando SOLO un valore e poi lo distribuisce a tutte le righe, come faccio a passare valori multipli presi dalla vista e non dal db?.... P.S. nel DB tutti i valori nell'ultima colonna sono inizializzati a ZERO e cosi vengono mostrati inizialmente nella prima view.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da frengo13 Visualizza il messaggio
    Il problema è proprio quello, come faccio a passare una sorta di array di stringhe da una view ad un altra
    L'ho detto brevemente prima, basta avere nomi di parametri che contengono in qualche modo il code. In modo che ogni quantità sia associata al code.

    Invece di emettere in output

    .....<input type="text" name="acquisto" value=...........

    fai emettere

    .....<input type="text" name="qtaXXX" value=...........

    Dove XXX e il code del prodotto corrente nel ciclo. Questo nome in forma qtaXXX (scegli tu la forma!) lo puoi comporre tanto nella prima pagina che nella seconda, perché in entrambe iteri su n prodotti e il code ce l'hai!

    E il getParameter quindi ora va benissimo perché prendi il valore in modo accurato per quel code.
    Ultima modifica di andbin; 09-01-2016 a 09:02
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Di nuovo grazie infinite della tua pazienza e dei tuoi consigli...la soluzione che mi hai dato funziona alla perfezione, in una pagina di prova ho infatti stampato a video e con successo i risultati in maniera indipendente...

    ho di fatto fornito la prima view di un contatore che passa alla view successiva aquisto1,acquisto2,...acquistoX
    codice:
    int cont=0;
    <input type=\"text\" name=\"acquisto"+ cont +"\" value=\" "+ quantA +" \"/>
    cont++;
    nella view riesco a stampare indipendentemente i valori in questa maniera:

    codice:
             int numA =Integer.parseInt(request.getParameter("acquisto1"));    
             int numB =Integer.parseInt(request.getParameter("acquisto2"));
             ...
             int numX =Integer.parseInt(request.getParameter("acquistoX"));
             
             out.println("<tr><td>"+ numA +"</td></tr>"); 
             out.println("<tr><td>"+ numB +"</td></tr>");
             ...
             out.println("<tr><td>"+ numX +"</td></tr>");
    perche non riesco a infilare un contatore dentro il request.getParameter()
    ho provato a far ciclare un intero all'interno in questa maniera

    codice:
    int cont = 1;
              int numA =Integer.parseInt(request.getParameter("acquisto"+counter)); 
              //...stampa e fa quello che deve fare
              cont++;
    ma non funziona sto sbagliando qualcosa per caso nella sintassi??

    Grazie ancora F.

  6. #6
    Quote Originariamente inviata da andbin Visualizza il messaggio
    L'ho detto brevemente prima, basta avere nomi di parametri che contengono in qualche modo il code. In modo che ogni quantità sia associata al code.

    Invece di emettere in output

    .....<input type="text" name="acquisto" value=...........

    code.
    RISOLTO GRAZIE!!! ho fatto un .trim() alle stringhe perche contava gli spazi vuoti dalla conversione tra String a int...


    Grazie mille per tutto!!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.