Zugriff auf Sitzungsvariablen in Javascript in JSP

7

Ich muss Daten für Google APIs-Tabelle bereitstellen ... also werde ich es von Servlet zu JSP

senden

aber wie kann ich auf diese Daten in "googles" Javascript zugreifen?

Ich werde ein Beispiel für ein anderes JS geben - sehr einfach - damit ich lernen kann, wie man das Thema macht

%Vor%

Es muss Elemente einer gegebenen Liste drucken ... aber jetzt ist es nur ein großes Skript mit Alarm darin ... um es zu refaktorisieren? Ich mag es nicht, in JSPs viel Java zu haben, weil das Servlet dort platziert werden sollte, wo es platziert werden sollte

EDIT: nur um zusammenzufassen - ich würde hier "normale" JS für die Schleife bevorzugen ... Generell würde ich Java-Code minimieren und JS maximieren

    
dantuch 30.08.2011, 09:53
quelle

3 Antworten

20

Konvertieren Sie es in JSON in doGet() eines vorverarbeitenden Servlets. Sie können dazu unter anderem Google Gson verwenden. Angenommen, Sie haben ein List<Person> :

%Vor%

(Beachten Sie, dass ich es als Anforderungsattribut statt als Sitzungsattribut angegeben habe, Sie können es ändern, aber ich glaube, es muss nicht unbedingt ein Sitzungsattribut sein, da es keine sitzungsweiten Daten darstellt)

Weisen Sie es wie folgt einer JS-Variablen in JSP zu:

%Vor%

Auf diese Weise ist es als ein vollwertiges JS-Objekt verfügbar. Sie können es direkt an die Google API weitergeben.

Rufen Sie jetzt die URL des Servlets anstelle der JSP auf. Wenn es zum Beispiel auf ein URL-Muster von /persons abgebildet wird, rufen Sie es mit Ссылка auf.

    
BalusC 30.08.2011, 11:50
quelle
4

JavaScript wird auf der Clientseite und Scriptlets, EL und JSP-Tags auf der Serverseite ausgeführt. Aus der Sicht des serverseitigen Codes wird JavaScript nur wie HTML-Markup generiert.

Wenn Sie also eine JavaScript-Schleife haben möchten, die in der generierten HTML-Seite über ein JavaScript-Array führt, müssen Sie den JavaScript-Code generieren, der das Array und die JavaScript-Schleife initialisiert.

Hier ist der JSP-Code

%Vor%

Dieser JSP-Code generiert den folgenden JavaScript-Code, wenn die Liste im Sitzungsattribut "banana", "apple" und "orange" enthält:

%Vor%

Achten Sie jedoch darauf, die Werte der Liste ordnungsgemäß zu umgehen, um einen gültigen JavaScript-Code zu generieren. Wenn einer der Werte beispielsweise "I'm cool" lautet, lautet das generierte JavaScript

%Vor%

was nicht mehr gültig ist. Verwenden Sie commons-lang StringEscapeUtils.escapeEcmaScript , um die Werte zu umgehen.

    
JB Nizet 30.08.2011 10:22
quelle
1

Da die ArrayList Objekte von Strings hat, können Sie einfach die Methode split () für den Wert der Array-Liste verwenden. Etwas wie unten;

%Vor%

//split the contents var splitContent = jsList.split(","); //an array of element

%Vor%

}

Ich hoffe, dass dies Ihnen helfen wird, dies zu lösen.

    
Naved 30.08.2011 10:28
quelle