Maison > interface Web > js tutoriel > Comment accéder aux ID de composants JSF en JavaScript ?

Comment accéder aux ID de composants JSF en JavaScript ?

Patricia Arquette
Libérer: 2024-11-27 11:50:12
original
263 Les gens l'ont consulté

How to Access JSF Component IDs in JavaScript?

Connaître l'identifiant d'un composant JSF pour une utilisation en Javascript

En Javascript, la fonction getElementById peut être exploitée pour accéder à un composant. Cependant, étant donné que JSF génère dynamiquement des ID de composant, l'obtention de l'ID du composant est cruciale. Cet article explore les moyens de récupérer l'ID du composant à utiliser en Javascript.

Considérez le scénario suivant dans lequel nous souhaitons accéder au composant inputText via le code Javascript :

<h:inputText>
Copier après la connexion
function myFunc() {
  // Get the inputText component's contents
  alert("Your email address is: " + document.getElementById("emailAddress").value);
}
Copier après la connexion

Utilisation d'un document .getElementById avec l'élément HTML DOM généré

L'élément HTML DOM généré a une structure qui diffère de l'ID que vous préciser dans JSF. L’inspection du code généré révélera l’ID attribué. Par exemple, le inputText dans l'exemple ci-dessus aurait pu être rendu comme :

<input type="text">
Copier après la connexion

où "j_id0:emailAddress" représente l'ID réel dans le DOM HTML généré par JSF. Par conséquent, pour référencer avec précision le composant en Javascript, utilisez l'ID généré au lieu de l'ID spécifié.

Définition d'un ID fixe pour les NamingContainers JSF

Vous pouvez également attribuer un ID fixe à JSF NamingContainer composants, tels que les formulaires, pour empêcher JSF de générer automatiquement des identifiants. Par exemple :

<h:form>
Copier après la connexion

Avec cette configuration, l'ID du formulaire sera fixé comme "formId" et l'ID inputText sera "formId:emailAddress", que vous pouvez désormais utiliser directement en Javascript.

Utiliser #{Component.clientId} avec Binding

Une technique plus avancée consiste à utiliser le #{component.clientId} expression avec une liaison de composant. Par exemple :

<h:inputText binding="#{emailAddress}" ... />
Copier après la connexion
var input = document.getElementById('#{emailAddress.clientId}');
Copier après la connexion

Mise à jour :

Utilisation directe de #{component.clientId}

L'article de blog mentionné dans le Le problème est directement lié aux références #{component}, qui font référence au composant actuel où l'expression EL est évaluée. Pour obtenir l'ID du composant, utilisez la syntaxe suivante :

var input = document.getElementById('#{component.clientId}');
Copier après la connexion

Passer l'élément HTML DOM en tant que "this" Référence

Une autre approche consiste à transmettre l'élément HTML DOM généré en tant que "this" référence à une fonction, vous permettant d'accéder directement aux propriétés du composant au sein de la fonction.

<h:inputText onclick="show(this)" />
Copier après la connexion
function show(input) {
  alert(input.value);
}
Copier après la connexion

Utilisation de jQuery et Délégation d'événements

jQuery offre une option encore plus avancée en utilisant la délégation d'événements et une classe de style pour abstraire les composants.

<h:inputText styleClass="someMarkerClass" />
Copier après la connexion
$(document).on("click", ".someMarkerClass", function() {
  var $input = $(this);
  alert($input.val());
});
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal