Newsgroup: it.comp.java
Titolo: [JSP URGENTE] usare il codice Java dentro a html/javascript

Ciao,
come ho già detto in un altro post,
                                   dovrei settare una variabile al
momento dell'onclick
in modo da poterla ritrovare su un altro file jsp che sto aprendo.
Forse il modo per risolvere il problema l'ho trovato (non so se
funziona, me lo auguro).
Solo che la variabile da settare la ricavo da un metodo Java:
entry.getUserName() e
                                    se inserisco questo codice dentro
l'onclick ho errore.
Come posso fare quindi?
Il codice che ho ora è questo e la variabile in questione è authoris,
ma genere un errore definendola dentro <%! %>, lo stesso definendola
prima di "var popup = Liferay.Popup(" (dentro l'onclick) con "var
authoris = entry.getUsaerName()".
<%! String authoris = entry.getUserName() ; %>
			<a href="javascript:void(0)" onclick="
			var popup = Liferay.Popup(
			{
				title: 'SiocSphere',
				position:[150,150],
				modal:true,
				width:500,
				height:300
			}
			);
			jQuery(popup).load('/html/portlet/ext/blogsioc/view_sioc.jsp',
function() {
			  this.author = authoris);
			  });"><liferay-ui:png-image image='/html/portlet/ext/blogsioc/
icon_sioc.png' height="20" width="24" /></a>
Il modo che ho usato per settare la variabile è il metodo load delle
jQuery (spero di averne capito bene il significato e che funzioni!)
poi per recuperarlo dall'altro jsp mi basta usare una variabile
chiamata author, giusto? Ma tale variabile la posso usare solo nel
codice html/javascript o anche nel java?

Scusa ma passare un parametro sembra troppo facile?
view_sioc.jsp?parametro=ciao
e poi nella jsp:
usare request.getParameter("parametro")
oppure
param['parametro']
--
www.megadix.it

Nella migliore delle ipotesi stai facendo confusione tra quello che puoi e
devi fare lato server e quello che puoi e devi fare lato client.
Non è che ti sei spiegata(?) benissimo, ma probabilmente la soluz. che
cerchi è qualcosa del tipo:
<script>
// codice JavaScript
var a = "<%= valore JAVA %>";
...
dove il valore JAVA può essere calcolato lì o recuperato dalla request...
(l'assegnamento JS è giusto per fare un esempio, ovviamente puoi fare quello
che vuoi).
Ma c'è anche la probabilità che non ti serva passare il parametro JAVA con
JS, lo recupereresti allo stesso modo dal secondo JSP (di popup).


Ciao, il problema è che ho provato a usare questi stratagemmi, ma con
liferay mica funzionano... :(


Ciao,
forse non ho spiegato bene il problema....
Allora, io ho questo link (non far caso al fatto che non punta a
nessun file, ho levato quella parte di codice):
<a href="javascript:void(0)" onclick="var variabile=<%= metodo Java
%>">immagine</a>
come vedi dentro all'onclick devo creare una variabile a cui assegnare
il valore di ritorno di un metodo Java, solo che la sintassi che uso
qui non funziona. Come faccio a fare questa assegnazione in modo
corretto?

 
allora esempio concreto:
<%=session.getAttribute("nomeOperatore") %>
questo mi ritorna il valore in stringa dell'attributo "nomeOperatore"
dell'oggetto session che io ho precedentemente settato.
se non funzia nenche così ci devi dare l'errore
Umberto

il 03/11/2008 15.22, Scrive Sarah 29521048:

<a href="javascript:void(0)"
onclick="doVariabile(<%= metodo Java%>)">immagine</a>
dove doVariabile() e' una funzione javascript che fara' quello che deve 
fare.
-- 
Dr.Ugo Gagliardelli,Modena,ItalyCertifiedUindoscrasherAñejoAlcoolInside
Spaccamaroni andate a cagare/Spammers not welcome/Spammers vão à merda
Spamers iros a la mierda/Spamers allez vous faire foutre/Spammers loop
schijten/Spammers macht Euch vom Acker/Spamerzy wypierdalac'

 - Mostra testo citato -
Sei solo un gran FALLOCEFALO ugo

 
Che tipo di variabile ritorna il metodo java? Li viene sostituito il valore.
Javascript succhia quasi di tutto ma fa differenza fra 1 e '1'
e soprattutto fa differenza fra a e 'a'
--
ac


Cosa intendi che non funziona? Java o Javascript? Per capirlo, guarda
la pagina prodotta:
se è <a href="javascript:void(0)" onclick="var variabile=">immagine</
a> allora non funziona il java
se invece è <a href="javascript:void(0)" onclick="var
variabile=10">immagine</a> e 10 è quello che ritorna java, ma non
sortisce alcun effetto, allora è Javascript ad essere errato. In
particolare mi insospettisce la parola chiave var. Secondo me non
dovrebbe starci, lì.
ciao
Alex

 non funziona. Come faccio a fare questa assegnazione in modo corretto?
non funziona e non è certo un problema di sintassi.
quello che ti servirebbe è un po' di confidenza con ajax e la libreria 
dwr (
http://directwebremoting.org/
). questo risponde a quello che chiedi.
-- 
++ Fino all'anno scorso avevo un solo difetto. Ero presuntuoso.
http://unopuntozero.wordpress.com/
http://www.flickr.com/photos/marko_po/


non per farmi i fatti tuoi... ma per curiosit�,
che variabile � che devi settare proprio all'on-click e non puoi
impostare prima
 


Le variabili di sessione non posso settarle in onclick, a lato client.

 wrote:

Ci provo e ti faccio sapere, grazie.


Il metodo Java torna una stringa.

 Sei solo un gran FALLOCEFALO ugo
Vuoi farti bannare anche qui? Gia' ti conoscono, poi sei uno che "ha 
bisogno", per cui lascia perdere e falla finita.


Sarah ha scritto:

allora gia' cosi' dovrebbe andare meglio:
<a href="javascript:void(0)" onclick="var variabile='<%= metodo Java
 > > %>'">immagine</a>
i.e. ammettendo che il metodo torni "Giovanni"
<a href="javascript:void(0)" onclick="var variabile='Giovanni'">immagine</a>
e' diverso da
<a href="javascript:void(0)" onclick="var variabile=Giovanni">immagine</a>
la variabile "Giovanni" non esiste e javascript non si incavola piu' di 
tanto.
Se invece la variabile tornata e' di tipo stringa ma e' un numero il 
problema sta da qualche altra parte.
Attenzione inoltre all'uso della "var" in IE anche se messa cosi' non e' 
pubblica. Se deve essere confinata all'interno di una funzione sarebbe 
meglio
<a href="javascript:void(0)" onclick="myFun('<%=java.metodo %>')"
Comunque mi stai convincendoo di evitare LifeRay come la peste.
Ma chi la usa questa variabile? E' per te o per il wrapper che usi?
--
ac

On 4 Nov, 20:03, "Dr.UgoGagliardelli"



Non c'entra IE, è proprio una questione di javascript.
[Inizio digressione]
- Mi incavolo moltissimo con chi dice che javascript è un linguaggio
semplice: è complicatissimo (IMHO)!! Il fatto è che il 99.99% dei
programmatori non ha capito nulla di javascript, cosa che non accade
con java (la mia stima è intorno al 50% :) ) Io fino a l'altro ieri mi
spacciavo per uno che ha letto di js, ma non ne capisce una acca. Il
fatto è che dei 1000000 tutorial che si vedono in giro, non si capisce
che ruolo abbia quella parola chiave var. Mi ricorda quando ho
incominciato a programmare in java, che mettevo la parola static nei
metodi un po' a caso, e poi il compilatore (gli IDE non esistevano
ancora...) si incavolava per chiamate di metodi non static da metodi
static, e , indovinate... rendevo ovviamente tutto static....!!
Ringrazio il cielo che poi alla fine ho capito VERAMENTE TUTTO.....
[Fine digressione]
var, per trovare un analogo in java, puoi vederlo come una specie di
'private'. E' una keyword che specifica lo scope della variabile
stessa. Secondo me 'non va' perché stai scrivendo qualcosa tipo (se
fosse traducibile in java):
public void onClick(){
  private variabile = "Giovanni";
};
javascript poveretto probabilmente lo fa, ma ovviamente la variabile
esce di scope subito e tu pensi che non l'abbia fatto...
La soluzione è:
1)(BRUTTA) ometti 'var' : questo fa si che la variabile sia GLOBLE,
per cui la vedrai sempre.
2)(PIUTTOSTO DIFFICILE) dichiari la variabile (usando var) nel suo
scope corretto. A questo punto nell'onClick la inizializzi
semplicemente,ovvero fai variabile = 'Giovanni' (SENZA var)

 semplicemente,ovvero fai variabile = 'Giovanni' (SENZA var)
Il punto e' che l'OP fa variabile = Giovanni
--
ac

 che ruolo abbia quella parola chiave var.
Interessato dalla questione, ho fatto una ricerca, e ho trovato questo
http://www.massimocarli.it/site/index.php?option=com_content&task=view&id=504&Itemid=41
Mi sembra interessante...


Okay, ingrazio tutti voi per l'aiuto! Ho risolto mettendo
l'espressione Java tra singoli apici e senza usare var, ma mettendo
direttamente la variabile dentro all'url:
<input type="button" id="BtnConferma" onclick="var popup =
Liferay.Popup(
			{
				title: 'SiocSphere',
				position:[150,150],
				modal:true,
				width:500,
				height:300
			}
			);
			jQuery(popup).load('<%= siocQueryAction %>');">
siocQueryAction è un actionURL.
Ora il problema è un altro, ma non credo che c'entri nulla con la
domanda del post:
17:22:12,437 WARN [PortletRequestProcessor:171] This URL can only be
invoked us
ing POST: /user/joebloggs/3?
p_p_id=EXT_33&p_p_lifecycle=1&p_p_state=normal&p_p_m
ode=view&p_p_col_id=column-1&p_p_col_count=1&_EXT_33_struts_action=
%2Fext%2Fblog
sioc%2Fsioc_query&_EXT_33_post_author=Joe+Bloggs
17:22:12,687 ERROR [jsp:52]
com.liferay.portal.security.auth.PrincipalException:
/user/joebloggs/3?
p_p_id=EXT_33&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&
p_p_col_id=column-1&p_p_col_count=1&_EXT_33_struts_action=%2Fext
%2Fblogsioc%2Fsi
oc_query&_EXT_33_post_author=Joe+Bloggs

 ac

 Mi sembra interessante...
Lo leggerò sicuramente. Io sono stato illuminato dai libri:
Packt - Publishing Object Oriented Javascript
Apress - Pro Javascript Design Patterns - The Essentials Of Object-
Oriented

 \"Giovanni\"?
Possibile ma molto improbabile anche perche' dovrebbe tornare
\'Giovanni\'. Altrimenti fa confusione con i delimitatori di stringa che 
gia' usa, non ho messo l'apice a caso, e come ben sai javascript ti 
consente di usarli "ambeidui" come delimitatori di stringa.
Se l'OP aveva chiaro tutto il "bus illis" non stava qui con 273 post.
E comunque come direbbero i colti inglesi "ai nu mai cichen".
Ovviamente anche io appartengo/ro' sempre alla classe "cichen" suddetta 
(di tipo static final e !abstract) ;-{)
P.S. Avevo postato giorni fa un quesito di "java" puro ci fosse stato un 
solo "javellottista" che mi abbia degnato. Ari ;-{))
--
ac