L'accès Java / Servlet / JSP / JSTL / EL variables en JavaScript
J'ai un formulaire dans la page JSP. J'ai à remplir en fonction de la demande objet (à partir de la servlet). Comment puis-je utiliser Java Script pour accéder à la demande des attributs d'un objet ou si vous pouvez me suggérer toute autre meilleure façon de remplir le formulaire dynamiquement?
Vous devez vous connecter pour publier un commentaire.
Vous devez réaliser que Java/JSP est un simple HTML/CSS/JS code producteur. Donc, tout ce que vous devez faire est de simplement laisser JSP imprimer la variable Java comme si c'est une variable JavaScript et le code HTML généré/JS sortie de code est syntaxiquement valide.
À condition que la variable Java est disponible dans les EL portée par
${foo}
, voici plusieurs exemples comment l'imprimer:Imaginer que le Java variable a la valeur
"bar"
, puis JSP sera finalement de générer ce code HTML que vous pouvez vérifier par un clic droit, l'Affichage de la Source dans le webbrowser:Remarque que les singlequotes sont donc obligatoires pour représenter une chaîne de caractères tapés variable en JS. Si vous avez utilisé
var foo = ${foo};
au lieu de cela, il serait impressionvar foo = bar;
, qui peuvent se retrouver dans "le bar n'est pas défini" les erreurs lorsque vous essayez d'accéder plus bas dans le code JS (vous pouvez voir la JS erreurs JS console du navigateur web du développeur d'outils que vous pouvez ouvrir en appuyant sur la touche F12 dans Chrome/FireFox23+/IE9+). Notez également que si la variable représente un nombre ou une valeur de type boolean, qui n'a pas besoin d'être cité, puis le tout fonctionne très bien.Si la variable qui se passe pour provenir de l'utilisateur entrée contrôlée, puis garder à l'esprit pour prendre en compte Attaque XSS trous et JS échapper. Près du bas de notre EL page wiki vous pouvez trouver un exemple de comment créer un personnalisé EL fonction de laquelle s'échappe une variable Java pour une utilisation sûre en JS.
Si la variable est un peu plus complexe, par exemple un Java bean, ou une liste de ceux-ci, ou une carte, alors vous pouvez utiliser l'un des nombreux JSON bibliothèques pour convertir l'objet Java à une chaîne JSON. Voici un exemple en supposant Gson.
Noter que de cette façon, vous n'avez pas besoin de l'imprimer en une chaîne de caractères entre guillemets plus.
Voir aussi:
script
balises et mondial js variables. Votre solution est préférable à l'utilisation d'undata-attribute
? (Je m'occupe de stocker une grandeJSON
variable).Si vous êtes pré-remplissage des champs du formulaire basé sur les paramètres de la requête HTTP, alors pourquoi ne pas simplement le faire sur le côté serveur dans votre JSP... plutôt que sur le côté client avec JavaScript? Dans la page JSP il ressemblerait vaguement comme ceci:
Sur le côté client, en JavaScript n'a pas vraiment le concept d'un "objet de requête". Vous devez analyser la chaîne de requête, vous-même manuellement pour obtenir les paramètres CGI. Je soupçonne que ce n'est pas ce que vous êtes réellement désireux de faire.
Dans le fichier JSP:
Cette constante variable sera alors disponible pour .js fichiers qui sont déclarées après le code ci-dessus.
Constants.java est un fichier java contenant une constante statique CONSTANTE nommée.
Le scénario que j'avais été, j'avais besoin d'une constante à partir d'un fichier de propriétés, de sorte qu'au lieu de construire un fichier de propriétés pour le javascript, je l'ai fait.
Dans la page JSP :
Accéder à cette valeur en Javascipt page à l'aide de :
J'ai ajouté la page javascript dans mon projet externe.