Dans le développement Web, il devient nécessaire d'exécuter des actions côté serveur en fonction d'événements spécifiques se produisant sur le client -côté. Ceci est réalisable dans JavaServer Faces (JSF) en employant diverses approches. Une de ces approches consiste à invoquer une méthode d'action de bean géré par JSF à l'aide d'Ajax lors d'un événement de chargement HTML DOM.
Dans JSF 2.3 et supérieur, le
<h:form> <h:commandScript name="commandName" action="#{bean.action}" render=":results" /> </h:form> <h:panelGroup>
Ce script peut être invoqué en utilisant du JavaScript simple :
commandName();
La configuration de autorun="true" le déclenche pendant le chargement du DOM.
Si PrimeFaces est utilisé, envisagez d'utiliser son
<h:form> <p:remoteCommand name="commandName" action="#{bean.action}" update=":results" /> </h:form> <h:panelGroup>
L'invocation est similaire à
commandName();
PrimeFaces utilise jQuery pour les appels AJAX, et non jsf.ajax natif JSF. request().
Pour les versions JSF antérieures à 2.3, OmniFaces propose
<o:form> <o:commandScript name="commandName" action="#{bean.action}" render=":results" /> </o:form>
Remplacez simplement h:commandScript par o:commandScript.
Une approche alternative consiste à utiliser un formulaire caché avec un
<h:form>
Invocation :
document.getElementById("form:button").onclick();
En dernier recours, on peut développer un UIComponent personnalisé qui étend UICommand et exploite jsf.ajax.request().
En résumé, ces approches permettent aux développeurs d'invoquer des beans gérés JSF sur des événements HTML DOM à l'aide de JavaScript natif. Le choix de la méthode dépend de facteurs tels que la version JSF, l'utilisation de la bibliothèque et les contraintes du projet.
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!