Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    Utente di HTML.it L'avatar di salcam
    Registrato dal
    Dec 2005
    Messaggi
    193
    Ok giusto. Ho organizzato il mio programma in questo modo:

    - Ho un Jbutton nel pannello principale che istanzia un nuovo oggetto della classe FattCliente che contiene tutti i dati della fattura; questi dati vengono passati ad un panel chiamiamolo FatturaPanel il quale contiene altri tre panel (Ho fatto questo per problemi di stampa in Java!!! Cmq funziona). Ora io ho utilizzato XStream nel seguente modo:

    codice:
    XStream stream = new XStream(new DomDriver());
    
    ObjectOutputStream out = stream.createObjectOutputStream(new fileWriter(System.getProperty("user.dir")+"/Fatture Create/fatt"+cont+".ext"));
    
    out.writeObject(fc);
    
    out.close();
    In questo modo non mi dà nessuna eccezione e sembra tutto funzionare per il meglio. Però quando vado a leggere dal file ext creato, mi dà eccezione. Allora ho aperto il file ext con WordPad e mi sono accorto (a parte dell'eccessiva dimensione, quasi 700 KB) della presenza di molti simboli strani, tra cui quello che dà eccezione:

    codice:
     &#x0
    Ho cercato qualcosa in giro ed ho capito che funge da NULL. Cmq la cosa importante è che non viene fatta la serializzazione nel modo corretto. Dove sbaglio?

  2. #12
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    160
    il .ext era solo un esempio, dovrebbe essere .xml, ma non credo sia questo il problema.
    700 Kb sono davvero tanti, com'è fatta questa classe FatturaCliente? quanti campi ha e di che tipo?

    io uso quella stessa funzione e funziona perfettamente.

    quando carichi il file che funzione usi? e soprattutto cosa dice l'eccezione generata? e in che punto la genera?
    La lettura dovrebbe essere fatta così

    codice:
    XStream xs=new XStream(new DomDriver())
    ObjectInputStream in=xs.createObjectInputStream(new FileReader(nome_file));
    FatturaCliente fattura=(Fattura)in.readObject();
    in.close();

  3. #13
    Utente di HTML.it L'avatar di salcam
    Registrato dal
    Dec 2005
    Messaggi
    193
    si FelixR ho fatto proprio così per la lettura, ma niente. Però se lo faccio con il metodo iniziale tutto funziona alla perfezione:

    codice:
    //Scrittura
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("fattura.dat"));
    
    out.writeObject(fatt);
    
    out.close;
    codice:
    //Lettura
    ObjectInputStream in = new ObjectInputStream(new FileInputStream("fattura.dat"));
    
    Fattura fatt = (Fattura)in.readObject();
    
    in.close;
    All'inizio mi dava un'eccezione perchè cercava di serializzare anche il database. Poi l'ho impostato come transient e tutto ha funzionato alla perfezione.

    L'unica soluzione al problema di XStream forse è proprio che dovrei imporre come transient il db, ma non so se è corretto o se è supportato da XStream.

    Ciao e grazie ancora

  4. #14
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    160
    se ti va bene lascialo pure così, però non puoi modificare i dati se non esclusivamente dal tuo programma.

    Probabilmente anche XStream cercava di serializzare il database, ma come mai? hai incluso tutto il database come campo della tua classe?

  5. #15
    Utente di HTML.it L'avatar di salcam
    Registrato dal
    Dec 2005
    Messaggi
    193
    assolutamente no. I dati provengono dal database, ma nella classe compaiono solo le variabili. :master:

  6. #16
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    160
    quello che fa xstream, se non specifichi diversamente, è prendere tutti i campi della classe e serializzarli come <nome_campo>valore_campo</nome_campo>. Se il campo è un'oggetto, contenuto serializza allo stesso modo i campi di quell'oggetto, inserendo un carattere TAB di indentazione. Una tale dimensione penso possa essere giustificata solo dalla presenza di oggetti molto grossi, ovvero con molti campi.

  7. #17
    Utente di HTML.it L'avatar di salcam
    Registrato dal
    Dec 2005
    Messaggi
    193
    non ti saprei dire. A questo punto penso sia il database. Magri lo proverò e ti farò sapere

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.