Newsgroup: it.comp.lang.javascript
Titolo: dubbio su showModalDialog

Ciao a tutti
volevo sapere se la funzione showModalDialog() poteva tornare un array
di valori...mi spiego meglio : Io da una pagina principale.jsp eseguo
uno script javascript per visualizzare una seconda pagina jsp usando
appunto showModalDialog... In questa seconda pagina setto il valore di
window.returnValue come Array di 2 valori per es...
è chiaro fino a qua?
A sto punto io sono nella mia pagina principale, ho visualizzato la mia
seconda paginetta a mò di pop-up, posso intercettare il valore tornato
dalla showModalDialog con una variabile di tipo var?
Es: Nel mio javascript scrivo :
var miaVar = showModalDialog("miaPagina.jsp");
eppoi :
document.getElementById("valueFilterPortFolio").value = objModal[0];
dove ovviamente 'valueFilterPortFolio' è settata nella
paginaPrincipale.jsp come
<html:hidden property="valueFilterPortFolio"/>
A sto punto entra in gioco STRUTS che setta un bean con dentro una
variabile privata di tipo String   'valueFilterPortFolio' e rispettivi
metodi get/set..
è chiaro il giro che fa? i valori che io mi aspetto sono dei numeri in
formato Stringa.
Invece il metodo get mi torna la seguente stringa : "[object]"
E che è questo?
Il tutto funzionava prima che introducessi l'array...se torno un solo
valore mi funzia....
Any suggestions?
Thx in advance
Nico

 E che è questo?
Evidentemente objModal[0] non contiene un valore stringa o numerico. Ma
questo io non posso saperlo, dato che non so come hai impostato il valore di
ritorno della modale.
Hai provato a fare un semplice alert per vadere cosa ti ritorna?
var objModal = showModalDialog("miaPagina.jsp");
alert(objModal+"\r\n"+(typeof objModal));
alert(objModal[0]+"\r\n"+(typeof objModal[0]));
document.getElementById("valueFilterPortFolio").value = objModal[0];
-- 
~ L'intelligenza artificiale non può battere la stupidità naturale.
(Lemma di Sullivan)

ZER0 ha scritto:

Ci ho provato sì ma non mi viene visualizzato nessun alert...ovvero :
se io metto gli alert nella seconda pagina, nella funzione doOk() che
è quella che ritorna il valore, qui gli alert funzionano e i valori
son corretti.
Ma nello javascript (sta su file esterno .js) che viene invocato dalla
pagina principale.jsp qui gli alert non funzionano, non vengono
visualizzati, credo a causa di Struts che setta la variabile nel mio
bean...almeno per quanto ne ho capito io..in pratica io son sicuro che
il valore che ritorna la pagina di popup son corretti grazie agli alert
mapoi non ho idea di cosa diavolo succeda...

 bean...
Ripeto, io non ho idea di come lavori STRUTS, ma se il codice javascript che
hai alla fine sul client è quello, deve sottostare alle medesime regole. E
quindi se gli alert non vengono eseguiti è per uno di quei motivi che ti ho
elencato precedentemente.
-- 
~ "Se un uomo non è disposto a lottare per le sue idee,
o le sue idee non valgono nulla o non vale niente lui." (Ezra Pound)

ZER0 ha scritto:

Grazie della tua risposta :
comunque dalla seconda pagina.jsp (il valore della variabile ariva da
un input ):
function doOk() {
			var arrayReturn = new Array();
			arrayReturn [0] = ""+document.getElementById("percXVariance").value;
			arrayReturn [1] =
""+document.getElementById("percXVariance").value;
			window.returnValue = arrayReturn;
			alert(arrayReturn [0]);
			alert(arrayReturn [1]);
			window.close();
			//window.returnValue =
document.getElementById("percXVariance").value;
			//window.close();
		}
eppoi ecco qua lo script
function filterChange()
	{
		var filter = document.getElementById("selectFilter");
		var res;
		var objModal;
		if (filter) {
			if (filter.value == 1)
				objModal =
window.showModalDialog("filterPortfolio.do","",'center:yes;resizable:no;help:no;status:no;toolbar=no;menubar=no;dialogWidth:310px;dialogHeight:100px');
			else if ((filter.value == 3) || (filter.value == 4) || (filter.value
== 5)){
				objModal =
window.showModalDialog("filterSelectValue.do?filterValue="+
filter.value,"",'center:yes;resizable:no;help:no;status:no;toolbar=no;menubar=no;dialogWidth:320px;dialogHeight:100px');
			}
			else
				objModal = 0;
		}
		if(objModal != undefined){
			if (filter.value == 1)
				//document.getElementById("valueFilterPortFolio").value = objModal;
				alert(objModal+"\r\n"+(typeof objModal));
				alert(objModal[0]+"\r\n"+(typeof objModal[0]));
				document.getElementById("valueFilterPortFolio").value =
objModal[0];
				document.getElementById("valueFilterPortFolio2").value =
objModal[1];
			else if ((filter.value == 3) || (filter.value == 4) || (filter.value
== 5))
				document.getElementById("valueFilterSelectValue").value = objModal;
			confirmChanges();
			document.getElementById("numPagePlannerView").value=1;
			plannerViewForm.submit();
		} else {
			document.getElementById("selectFilter").value = "";
		}
	}

Nicodemo ha scritto:

A me interessa il ramo 1 di questo script e sò che ci passa per il
fatto che poi i valori delle variabile nel bean sono valorizzati...solo
che in maniera errata...

 che in maniera errata...
forse ti è sfuggito il messaggio di Zer0:
"Premssa: attento al quoting. Non è necessario riportare in toto il post.
 
http://wiki.news.nic.it/QuotarBene
"
Grazie.
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 				alert(objModal[0]+"\r\n"+(typeof objModal[0]));
Ma questi alert se ho ben capito non te li visualizza. In tal caso significa
che o objModal è undefined, e quindi da qui non ci passa, oppure che c'è un
errore javascript precedente che ti blocca l'esecuzione del codice
successivo.
Questi alert te li DEVE visualizzare. Risolvi questo problema, il resto
verrà di conseguenza.
-- 
~ Non sono disordinato. Sono solo un massimizzatore di entropia.

Ti ringrazio per l'aiuto...purtroppo adesso + urgente un prob di
plsql...uffa...scusa se son sembrato di coccio è che ho 1000 cose da
fare...se risolvo ti contatto per dirti dove stava il prob...grazie
ancora, a tutti e 2
Nico