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

    Passaggio Vector<Object> da JSP a Action Java

    Salve a tutti. Ho il seguente problema.
    Ho una action che mi restituisce un Vector<oggetto> ad una JSP nella quale recupero il contenuto di tale vettore tramite:

    codice:
    Vector<oggetto> Lista =(Vector<oggetto>)request.getAttribute("listaArticoli");
    da questa pagina JSP io ho bisogno di passare di nuovo tale Vector ad una nuova action che vado ad attivare tramite un pulsante submit contenuto in un form.

    Come posso fare per passare tale Vector alla action(classe Java)?!
    Ho provato a buttare tutto il contenuto del vettore all'interno di un tag "fittizio" Hidden presente nella pagina JSP e a submittare il tutto, ma alla classe java non gli arrivano i dati corretti.

    Io utilizzo anche il framework struts2.
    Tramite il tag saram di struts per esempio è possibile??!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Sposto nel forum Java.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Passaggio Vector<Object> da JSP a Action Java

    Originariamente inviato da digital80
    da questa pagina JSP io ho bisogno di passare di nuovo tale Vector ad una nuova action che vado ad attivare tramite un pulsante submit contenuto in un form.

    Come posso fare per passare tale Vector alla action(classe Java)?!
    La questione è che ormai la pagina è arrivata al browser, il submit causa una nuova "request" e in quel momento di oggetti Java non "esiste" più nulla, quello che hai è solo roba client in HTML.

    Forse sarebbe meglio se il Vector lo salvi sul server in "sessione". Se per qualunque motivo non puoi ci sarebbe tecnicamente un barbatrucco. Ammesso che: a) il form fa un "POST" e b) ciò che è nel Vector è "serializzabile" (proprio la "serializzazione" degli oggetti in Java, intendo), quando generi il form potresti generare anche un campo "nascosto" che contiene una forma serializzata e codificata in qualche modo (es. hex o Base64, insomma "testo") del Vector.
    Lato server al submit ricevi questo parametro testuale, lo decodifichi e dallo stream di byte riottieni tramite deserializzazione il Vector.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Mmmm intanto ti ringrazio della risposta!
    il discorso sulla serializzazione-deserializzazione non mi è tanto chiaro e probabilmente un esempio mi potrebbe far parecchio comodo!
    Comunque premetto che il tipo di oggetti di cui è composto il mio Vector è un semplice oggetto composto da circa 4 o 5 stringhe, quindi tutta roba testuale.
    Inoltre si...il form effettua un submit di roba tramite post così:

    codice:
    <s:form action="miaAction" method="post"  name="invio" enctype="multipart/form-data">

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da digital80
    il discorso sulla serializzazione-deserializzazione non mi è tanto chiaro e probabilmente un esempio mi potrebbe far parecchio comodo!
    Comunque premetto che il tipo di oggetti di cui è composto il mio Vector è un semplice oggetto composto da circa 4 o 5 stringhe, quindi tutta roba testuale.
    Non è questo il punto (gli oggetti che contengono solo stringhe). Perché la serializzazione usa un protocollo (un formato) "binario". Che poi nello stream di dati si possano "vedere" anche sequenze di caratteri perché ci sono campi String .... beh, ok è un conto.

    ObjectOutputStream (la classe che "sa" come serializzare), potrebbe scrivere su un ByteArrayOutputStream, così alla fine ottieni un byte[] con i dati "serializzati". Questo array di byte lo devi codificare in una forma testuale, hex, Base64, ecc.... perché chiaramente deve finire in un documento HTML.

    Es. se nell'array hai un equivalente { 0x24, 0x6c, 0x2a, .... allora potresti generare una stringa con la rappresentazione esadecimale dei byte "246c2a......." che poi "butti" in output nella pagina in un campo nascosto. E chiaramente dovrai poi fare il contrario al submit. Ma questa codifica è da fare in hex o altro modo e nel framework standard non c'è nulla del genere.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Grazie..ora è piu chiaro.
    Probabilmente un'altra soluzione potrebbe essere quella di salvarmi il mio Vector in sessione nel localContext e poi accedervi ogni volta che mi serve. Il problema è che questo Vector cntiene una lista parecchio lunga di stringhe..e quindi come dimensioni potrebbe essere abbastanza consistente..e non so se salavare tutta questa roba in sessione potrebbe essere "pesante"...

  7. #7
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Allora la tecnica del passaggio tramite un campo "hidden" nella pagina web non fa per te.
    E' corretta la memorizzazione del vettore nella sessione dell'utente (valutando l'impiego di memoria richiesto e progettando in maniera da curarne la cancellazione una volta esaurito il suo compito). Se tale vettore fosse condiviso fra più utenti può essere opportuno ottimizzare salvandolo nel contesto dell'applicazione web.

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.