Newsgroup: it.comp.java
Titolo: POST diventa GET, poi POST, poi GET

[okkio, forse OT]
Allora, vorrei capire se Wanna Marchi mi ha lanciato il malocchio o 
qualcun'altro ha avuto lo stesso problema:
- ho una form HTML, con action="path a una servlet", method="POST" e 
target in una finestra con un nome preciso
- la servlet genera al volo un PDF con Jasper Reports
- il submit avviene invocando una funzioncina javascript: mi cerco il 
form e invoco f.submit() (funziona, garantito e sano come un pesce)
- su Firefox no problema (ma va?)
- su Internet Explorer succede il paranormale: la prima volta invoca la 
POST con tutti i parametri, la seconda una GET; e va avanti così: una 
volta POST, una volta GET e così via...
Può essere che nella response devo settare qualche header particolare, o 
magari devo inserire qualche configurazione in Tomcat e così via ?
O lo stramaledetto è bacato e amen ?
Boh :(
Se qualcuno ha avuto lo stesso problema risponda pure, anche se non lo 
ha risolto almeno non mi sentirò solo.
PS:
Se ogni volta chiudo la finestra funziona tutto alla perfezione...
-- 
  -- + Setaceous Pig + --
http://megadix.users.mcs2.netarray.com/
http://www.jroller.com/page/megadix/

 
Ahhh, i piaceri di IE:
"There are a lot of known issues with Internet Explorer. They aren't a 
problem in any version of MSIE, but it is always safe to use some 
standard workarounds in order to avoid unforeseen problems. All these 
workarounds are described in the tutorial:"
http://itextdocs.lowagie.com/tutorial/general/webapp/
--
Marco

 qualcun'altro ha avuto lo stesso problema:
E' un problema javascript, non è per fare il puntiglioso ma se chiedi 
dove la gente mastica html e js è più probabile che tu ottenga una risposta.

strano ... puoi postare la form html che usi? cosi controlliamo cosa
puo' essere?

 
Purtroppo il problema non è solo html, solo javascript o solo j2ee; non 
sono per il momento riusciuto ad "asciugarla" per creare un test case 
pulito, ma ho risolto in altro modo.
Il problema (per i curiosi) è l'interazione fra Internet Explorer e il 
server: su quest'ultimo bisogna fare dei trucchi veramente zozzoni (vedi 
il preziosissimo post di Marco Trevisan) perchè il browser amato dalle 
casalingue di Voghera fa delle request multiple, fra l'altro ignorando 
proxy, cache e senso comune.
Sigh.


Ero curioso solo perche' non ho mai notato un comportamento del genere,
pur lavorando da tempo con form e submit javascript, sia con IE (varie
versioni esclusa la 5.0 inutilizzabile), Opera, Firefor/Mozzili/Gechi
vari
Volevo capire quando accadeva il magheggio, per non ritrovarmici
dentro.
Dimitri De Franciscis ha scritto:


 
Beh, in realtà non sono riuscito a creare dei test case attendibili che 
riproducano in modo prevedibile l'errore. Diciamo che si manifestava 
solo in un punto preciso dell'applicazione, della quale però non posso 
postare il codice; posso però dirti le condizioni in cui si verifica:
- <form> con definiti attributi action, method (settato a "POST"), 
target (settato con un nome tipo "reportX", "reportY") e name
- al posto di <input> di tipo submit usiamo dei button, e sull'onClick 
chiamiamo delle funzioni JS che effettuano il submit del form
- si apre una nuova finestra con il report pdf, creato da una servlet 
con Jasper Reports
Qui arriva il bello: se fai reload (F5 o pulsantone "aggiorna") Explorer 
mi chiama la servlet con una GET, perdendo ovviamente tutti i parametri. 
Non solo: se lascio aperta la finestra e ri-clicco sul form di prima, 
Explorer mi esegue una volta la GET, una volta la POST (come subject).
Come ho risolto ? Gli ho dato come target="_blank", agli utenti sta bene 
e a me pure.
Ripeto: sigh...


OK .. ora e' chiarissimo.
In pratica non sente correttamente il reload.
A volte mi capitavano cose del genere quando c'era la cache impostata
in "automatico" e non a "all'apertura della pagina"
potevi valutare anche l'uso di un GET, sempre che le la lunghezza
totale dei dati della form da inviare non fosse superiore al 1000 byte
(o qualcosa del genere .. anche se sinceramente non ricordo il valore
esatto), in questo modo i parametri erano sempre in url e non c'era
problema.
Inoltre in GET puoi sfruttare la cache del client, dato che il browser
fa prima una chiamata chiedendo al server se il contenuto e' expired, e
poi ricarica il dato. Lo capisci bene con un programma proxy come
proxomitron ..
ma forse sono uscito troppo dal seminato
grazie comunque per l'info interessante ..
Dimitri De Franciscis ha scritto:
