Set array-Werte in javascript von JSTL-code
Ich habe einen code, der wie folgt aussieht:
In AnalyzeUserClient.jsp:
<c:set var="arrayList"><%= (ArrayList<String>)request.getSession().getAttribute("arrayList") %></c:set>
var sessionId = [];
<c:forEach items=${arrayList} var="id">
sessionId.push("${id}"); //add them one at a time, assuming string values
</c:forEach>
Jedoch diese Zeile:
sessionId.push("${id}");
nicht zu sein scheinen die übergabe der Werte in das array "sessionId" (ich sah den source-code-browser).Die Frage ist also,was kann ich tun, übergeben Sie die Werte in das array?
EDIT:habe gerade realisiert, dass es einige Probleme, als der JSTL ist serverseitig und JavaScript ist client-Seite.So gibt es eine Abhilfe auf?
- In Bezug auf Ihre Bearbeitung, über die server-Seite arbeiten zusammen mit client-side, wenn das die Absicht ist, zu produzieren JS, das füllt die
sessionId
array und verwenden Sie es dann, nur auf der client-Seite, dann macht das nichts. (Es wird nur ein problem, wenn Sie Ihre server-side-code versucht, das array zu.) Sie sollten in der Lage sein, um Sie mit server-side-code für die Ausgabe JS, das füllt ein array - obwohl ich ' D betrachten die Strukturierung der it in einer Weise, die setzt die Werte direkt in das array-literal[]
anstatt.push()
. - Ich habe versucht zu tun: "sessionId["${id}"];" wie gut,aber es ist immer noch nicht funktioniert.Gibt es eine andere Möglichkeit diese zu lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Don ' T mix EL und scriptlets. In der Tat, vergessen Sie scriptlets komplett:
Beachten Sie aber, dass dies generiert ungültige JavaScript, wenn eine der IDs Fall zu enthalten, dass ein doppeltes Anführungszeichen. So würden Sie besser JavaScript-escape-IDs vor, in Ihrer Steuerung. Und ich würde vorschlagen, einen ganz anderen Ansatz: serialisieren der Liste der IDs, um einen JSON-string in Ihrem controller, und speichern Sie diese JSON-string im request-Attribut. Die JSP-Seite muss nur
die für die übersetzung der folgenden generierten code:
sessionId.push("")
ist gültiges JavaScript. Es fügt eine leere Zeichenfolge an dersessionId
array.