Passage d'un int[] Java en paramètre d'une fonction Javascript

Résolu
stuntrepresent Messages postés 2 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 31 juillet 2009 - 31 juil. 2009 à 15:53
stuntrepresent Messages postés 2 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 31 juillet 2009 - 31 juil. 2009 à 17:20
Bonjour,

je tiens tout d'abord à saluer l'esprit d'entraide qui règne sur ce forum que je consulte très souvent mais sur lequel je n'avais encore jamais osé poser de question.

Il se peut que ce soit trivial mais je suis dessus depuis un bon moment et je n'ai rien trouvé de similaire sur le forum.

J'ai hésité entre les sections Java et Javascript pour poser ma question, la voici :

J'ai un champ texte dans une JSP dans lequel je dois pouvoir entrer un entier.
j'utilise la propriété onKeyPress de mon champ texte pour appeler une fonction Javascript qui fait cette vérification. Jusque là tout va bien.

Je voudrais maintenant limiter les valeurs possibles pour ce champ texte à partir d'un tableau d'entiers représentant les valeurs possibles.

Ces valeurs sont en fait stockées en base de données, je les extraits de la base dans le controller de ma page JSP et je passe un tableau d'entiers en attribut dans ma requête. Ainsi, depuis la page JSP, je peux récupéré ce tableau et le passer en paramètre de ma fonction JSP.

Avec Firebug, je peux voir ce qui se passe pendant l'exécution du Javascript, en fait, la fonction Javascript reçoit l'adresse du tableau : [I@4ab168. En fait, je me doutais qu'il y avait peu de chance qu'un objet Java soit directement utilisable en Javascript mais je pensais trouver un moyen de conversion relativement simple mais malheureusement, je sèche.

Si certains ont des idées, merci d'avance

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
31 juil. 2009 à 17:04
Salut,

Il n'y a aucune interraction possible entre une variable java et une variable javascript : ce sont deux langages bien différents, donc l'un est exécuté sur le serveur (java) et l'autre au niveau client (javascript).

Une solution possible, c'est de récupèrer la valeur de ta variable et la passer dans une variable javascript dans ta page jsp, par exemple :
function javaScript() {
  var variable = <%tableauJava[0]%>; // récupèration de la première valeur de ton tableau...
}


Une autre solution : passer par AJAX pour envoyer une requête vers le serveur, qui te renverra sous la forme d'un flux xml (parsable en javascript donc) ou directement en JSON (directement interpretable en javascript donc) pour récupèrer les valeurs de ton tableau en question.

Je te conseille la seconde approche qui est bien plus standard...
______________________________________
DarK Sidious
3
stuntrepresent Messages postés 2 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 31 juillet 2009
31 juil. 2009 à 17:20
Merci Mr Palpatine ;)

Entre temps j'avais utilisé une solution un peu moins propre en construisant un String à partir de mon tableau d'entiers (les entiers concaténés en fait). J'ai placé cette chaîne de caractère dans un champ caché de ma JSP, je pouvais ainsi venir lire la valeur depuis le Javascript.

Cette solution ne me convenait pas vraiment car pas très "propre" donc je vais me pencher sur ta seconde solution et la mettre en œuvre si ça n'implique pas de trop grosses contraintes.

Merci beaucoup
0
Rejoignez-nous