Newsgroup: it.comp.java
Titolo: Passaggio di parametri ad un Servlet

Buonasera a tutti .
Il mio problema è questo : ho una pagina HTML con un form , contenente una
immagine ( che funge da bottone ,  è infatti in un tag href ) e due campi
hidden con un *name* ed un *value* ciascuno  che io voglio passare ad una
Servlet.
Il problema nasce dal fatto che non posso usare un tipo di bottone Submit ,
o funzioni javascript del tipo  nomeForm.submit(); sennò la Servlet non
funziona , per vari motivi che non sto ora ad elencarvi.
Io vorrei quindi sapere se è possibile inviare alla mia Servlet questi
parametri contenuti nei campi hidden del mio form senza utilizzare  bottoni
del tipo <input type=submit > o richiamare funzioni javascript che facciano
la stessa cosa.
Forse non è possibile , ma se a qualcuno di voi venisse in mente qualche
consiglio gliene sarei immensamente grato.
Ciao a tutti
    - MaX-
--
<!-- Java : compile once , run everywere -->

A me viene in mente il fatto che le immagini che fungono da bottoni non
devono essere delle href ma delle type="image"
Sono infatti dei tipi "misti" tra un tag <img e una specie di submit
Prova :-))
J

"J" <jj@thecloud.o> ha scritto

Si , hai ragione , ho provato anche come dici tu , ma il problema non è
quello di usare una immagine come bottone , o un vero e proprio bottone , il
probvlema è che non devo usare submit , nè nel tipo di bottone , nè usando
una analoga funzione javascript.
Ciao :)
    - MaX -



|
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://bbruno.fasturl.it
|
| 
http://members.xoom.it/bbruno
| 
http://digilander.iol.it/bbossola
|

VanL00N wrote:

Non sò se hai problemi con javascript in generale o solamente con funzioni
javascript di tipo submit.
Se è solo con il secondo tipo, potresti associare all' onClick sull'img una
funzione javascript che prende
i parametri della form che ti servono tipo:
var hid1=document.forms[0].nome_campo_hidden.value;
e poi richiamare la tua servlet:
document.location.href="nomeServlet?campo1="+hid1;
Ciao,Marco.

 la stessa cosa.
Se proprio non vuoi dirci per quale motivo il post non ti funziona :-))):
se ho ben capito i due campi hidden li riempi tu quando costruisci questa
pagina html.
La soluzione, allora, e' far diventare il pulsante un link in cui l'href lo
inserisci tramite una String di questo tipo:
String myUrl = urlLink+"?hidden1="+hidden1+"&hidden2"+hidden2; (in pratica
stai montando l'url con una "query string" del tipo
urlmyservices?hidden1=1427&hidden2=mario)
dove:
urlLink e' il metodo della servlet che vuoi invocare
hidden1 e' ilvalore del primo campo hidden
hidden2 e' ilvalore del secondo campo hidden
(a questo punto i due campi hidden scompaiono)
nella servlet riprendi i due valori dall'oggetto request e li utilizzi come
vuoi.


Ciao Marco,
    io ho provato la tua proposta, ma mi è impossibile modificare
document.location.href perchè è  di sola lettura (così ho letto in un
tutorial sui javascript).
Forse ho fatto qualche errore....
Il mio javascript è questo e legge un campo hidden del form...
<script language="JavaScript">
     function vai() {
         var hid = document.js.schiaccia.value;
document.location.href="
http://localhost:8080/servlet/Prova?schiaccia=
"+hid;
     }
</script>
Dov'è il problema????
Ho risolto il problema facendo aprire una nuova finestra con window.open()
passandogli l'URL.
Ciao e grazie...

Sbagli quando prendi i valori dai campi della form:
var hid = document.js.schiaccia.value; --> errato
var hid =document.forms[0].schiaccia.value; --> giusto
document.form[0] č il riferimento a tutti i campi compresi tra <form> e </form>
se hai piů form scriverai document.form[1], document.form[2], ecc.
Io non ho mai utilizzato + form.
Prova

Io nella mia pagina di prova ho un solo form.
Per comodità utilizzo la notazione "array", se così si può dire.
Comunque ho provato anche ad associargli un nome e ad usare la tua
notazione, ma non è cambiata la situazione.
Ergo credo che il problema non sia quello
CIAUZ

Per curiosità, perché la servlet non funziona con submit?
Come fa la tua servlet ad accorgersi che la request GET è stata
generata cliccando sul submit di una form e non scrivendo l'url new
browser?
tityrus

 Se dai maggiori dettagli potremmo capire perche' il post non ti funziona.
Ok , mi rendo conto di essere stato un po vago nella spiegazione del
problema , quindi adesso cercherò di darvi qualche indizio in più , affinchè
magari voi possiate avere un'immagine più dettagliata della situazione.
Dunque... io ho una pagina HTML , all'interno della quale ci sono vari form
. All' on-click di ogni bottone all'interno di questi form io chiamo sempre
la stessa Servlet , che , a seconda dei parametri che le arrivano fa query
differenti ad un DB , e mi ritorna una stringa HTML con una tabella
contenente il risultato della query.
Io all'interno della mia pagina HTML ho messo nell'<head> un javascript con
una funzione che mi apre una ShowModalDialog , alla quale ho dato come URL
la mia Servlet appunto.
Il risultato , in fin dei conti , è che mi si apre quasta finestra ( di tipo
ShowModalDialog ) sopra la mia pagina HTML, contenente il risultato della
query.
Il problema è che , dopo molti tentativi , ho notato che se io passo i
parametri ( per il tipo di query da fare ) alla Servlet , utilizzando un
Submit , la ShowModalDialog funziona male , nel senso che mi si apre vuota
( anzi con l'errore 404 file non trovato , in pratica è come non trovasse la
Servlet) , ma la cosa bella è che appena io la chiudo questa ShowModalDialog
, mi parte il metodo post , mi sparisce la pagina HTML chiamante , me ne si
apre una nuova col risultato della query. E questa è cosa che io non
desidero assolutamente , poichè necessito che la pagina chiamante sia sempre
sotto , con la finestrella ShowModalDialog che mi si apre sopra , contenente
il risultato della query.
Probabilmente utilizzando un oggetto javascript differente , ad esempio un
tipo window , invece di un ShowModalDialog non avrei quel problema , ma
purtroppo tutte le mie funzioni javascript necessitano di un oggetto
ShowModalDialog .
Ecco. Questo è piu' o meno il punto della situazione.
Ah , ovviemente , ho letto le vostre risposte che suggerivano di fare una
concatenazione di stringhe con i parametri da passare alla Servlet , e poi
passarle lo "stringone" della URL completa , ma questa è cosa che avevo
tentato pure io , funziona , ma piace poco .
Io non credo che esistano altri modi per risolvere questo problema , ma se
vi venisse in mente qualche cosa ve ne sarei molto grato .
Grazie , e ciao a tutti :))
    - MaX -
