Comment transférer de la java de tableau à tableau javaScript à l'aide de jsp?
J'ai une liste de chaînes sur mon serveur que je suis en train de voir le client sous la forme d'un tableau. Le code que j'essaie de l'utiliser est la suivante:
Dans la jsp j'ai un List<String>
colonne
Je cherche le code suivant:
<%int j = 0; %>
for(var i = 0; i < <%=columns.size()%>; i++)
{
colArray[i] = "<%=columns.get(j++)%>";
}
Ce code renvoie le premier élément dans la liste des colonnes pour chaque élément dans le colArray.
J'ai aussi essayé:
colArray = <%=columns.toArray()%>;
qui ne fonctionne pas non plus.
J'ai l'impression de faire une petite erreur quelque part et je suis tout simplement pas voir. Est ce que je suis en train de faire possible de la manière que je cherche?
Grâce.
OriginalL'auteur kgrad | 2009-02-05
Vous devez vous connecter pour publier un commentaire.
Vous obtenez le code JSP qui est exécuté sur le serveur confondu avec le code JavaScript est exécuté sur le client. L'extrait de
<%=columns.get(j++)%>
est exécuté une seule fois, sur le serveur, et le JavaScript boucle autour de lui n'est pas pertinent à ce stade. Lorsqu'il atteint le client, de la boucle du corps juste ditcolArray[i] = "first entry";
qui met naturellement la même chaîne de chaque élément de la matrice.Ce que vous devez faire est plutôt d'avoir une boucle exécuter sur le serveur, comme ceci:
Ma JSP compétences sont rouillés, et la syntaxe peuvent être différentes, mais j'espère que vous obtenez l'idée.
Edit: Comme il a été souligné dans les commentaires, vous devez être TRÈS prudent au sujet d'échapper à quoi que ce soit dans les Chaînes qui pourraient leur être interprété comme du code JavaScript (notamment les guillemets) - surtout si elles contiennent du contenu généré par l'utilisateur. Sinon, vous êtes en laissant votre application l'échelle ouverte de Le Cross-site scripting et Cross-site request forgery attaques.
Je voudrais aussi ajouter un point-virgule à la fin de la deuxième ligne.
OriginalL'auteur Michael Borgwardt
Essayez d'utiliser JSON (Javascript object notation), il serait assez simple à coder le tableau et le décoder sur javascript
check it out ici
http://www.json.org/java/index.html
OriginalL'auteur perrohunter
Une fois que le JavaScript atteint le client, le serveur de code a arrêté l'exécution. Le code du serveur ne s'exécute pas "en parallèle" avec le code client.
Vous avez à construire l'ensemble de JavaScript initialisation de Java et de l'envoyer, complète et exécutable, pour le client:
C'est juste une façon de le faire, vous pouvez également créer de la sortie "à la volée" en intégrant le serveur de code à l'intérieur de la
[
et]
. J'ai utilisé cet exemple pour essayer de démontrer la séparation entre la construction de la chaîne qui comprend le JavaScript côté client et à la sortie que pour le navigateur.OriginalL'auteur Grant Wagner
Exp Langue:
OriginalL'auteur fmanna
Les solutions posté ci-dessus n'a pas fonctionné dans mon cas, j'avais besoin d'un supplément variable Javascript pour faire le transfert:
OriginalL'auteur José Almeida
Pour moi, cette solution a fonctionné. Tout d'abord, Vous devez faire une JSONArray et à l'utilisation c'est toJSONString() la méthode. Cette méthode convertit la liste JSON texte. Le résultat est un tableau JSON.
Dans votre page JSP, vous devriez appeler le toJSONString() la méthode de la liste, et de passer le JSON texte à un tableau JavaScript.
(Éventuellement, Vous pourriez faire une simple méthode de lecture pour la liste. Dans le cas où si vous ne instancier la classe JAVA - qui a la liste de champ de l'int de la page JSP.)
OriginalL'auteur F3R1