J'ai effectué une recherche sur Internet et je ne trouve pas de liste de <p:ajax>
événements. Quelqu'un peut-il fournir une liste complète des événements pour le <p:ajax>
tag?
Je suis particulièrement intéressé s'il y a un événement onblur
ou quelque chose de similaire.
Vous pouvez rechercher "Événements de comportement Ajax" dans Guide de l'utilisateur PrimeFaces , et vous en trouverez une abondance pour tous les composants pris en charge. . C’est également ce que PrimeFaces, directeur Optimus Prime, suggère de faire dans le cadre de cette question connexe sur le forum PrimeFaces <p:ajax>
liste d'événements?
Il n'y a pas d'événement onblur
, c'est le nom de l'attribut HTML, mais il existe un événement blur
. C'est juste sans le préfixe "on" comme le nom d'attribut HTML. Vous pouvez également consulter tous les attributs "on *" de la documentation de balise du composant en question pour voir ceux qui sont tous disponibles, par exemple. <p:inputText>
.
Vous voudrez peut-être consulter "Événements JavaScript HTML DOM" pour un aperçu général des événements:
http://www.w3schools.com/jsref/dom_obj_event.asp
PrimeFaces est construit sur jQuery, voici donc la documentation "Événements" de jQuery:
http://api.jquery.com/category/events/
http://api.jquery.com/category/events/form-events/
http://api.jquery.com/category/events/keyboard-events/
http://api.jquery.com/category/events/mouse-events/
http://api.jquery.com/category/events/browser-events/
Ci-dessous, j'ai répertorié certains des événements les plus courants, avec des commentaires sur leur utilisation (extraits de la documentation jQuery).
Événements de souris
(Tout élément HTML peut recevoir ces événements.)
click
dblclick
mousedown
mousemove
mouseover
mouseout
mouseup
Événements de clavier
(Ces événements peuvent être attachés à n’importe quel élément, mais ils ne sont envoyés qu’à l’élément ayant le focus. Les éléments focalisables peuvent varier d’un navigateur à l’autre, mais les éléments de formulaire peuvent toujours avoir le focus et sont donc des candidats raisonnables pour ces types d’événements.)
keydown
keypress
keyup
Événements de formulaire
blur
(Dans les navigateurs récents, le domaine de l'événement a été étendu pour inclure tous les types d'éléments.)
change
(Cet événement est limité à <input>
éléments, <textarea>
boîtes et <select>
éléments.)
focus
(Cet événement est implicitement applicable à un ensemble limité d'éléments, tels que des éléments de formulaire (<input>
, <select>
, etc.) et des liens (<a href>
). Dans les versions récentes du navigateur, l'événement peut être étendu pour inclure tous les types d'élément en définissant explicitement la propriété tabindex de l'élément. Un élément peut être mis en évidence via des commandes au clavier, telles que la touche Tab, ou par un clic de souris sur l'élément.)
select
(Cet événement est limité à <input type="text">
champs et <textarea>
des boites.)
submit
(Il ne peut être attaché qu'à <form>
éléments.)
Malheureusement, les événements liés à Ajax sont mal documentés et je n'ai trouvé aucune liste complète. Par exemple, User Guide v. 3.5 répertorie itemChange événement pour p:autoComplete
, mais oublie de mentionner change événement.
Si vous voulez savoir quels événements sont pris en charge:
SelectOneMenu
sont définis dans forms.js)this.cfg.behaviors
référencesPar exemple, cette section est responsable du lancement de l'événement toggleSelect dans le composant SelectCheckboxMenu
:
fireToggleSelectEvent: function(checked) {
if(this.cfg.behaviors) {
var toggleSelectBehavior = this.cfg.behaviors['toggleSelect'];
if(toggleSelectBehavior) {
var ext = {
params: [{name: this.id + '_checked', value: checked}]
}
}
toggleSelectBehavior.call(this, null, ext);
}
},
Schedule fournit divers événements de comportement ajax pour répondre aux actions de l'utilisateur.
il y a plus ici https://www.primefaces.org/docs/guide/primefaces_user_guide_5_0.pdf
J'ai la liste en mode débogage; J'ai d'abord vu le moment où l'erreur a été jetée
javax.faces.view.facelets.TagException: /showcase/partial_submit.xhtml @ 26,36 L'événement: modifié n'est pas pris en charge. org.primefaces.component.behavior.ajax.AjaxBehaviorHandler.applyAttachedObject (AjaxBehaviorHandler.Java:179) org.primefaces.component.behavior.ajax.AjaxBehaviorHandler.apply (AjaxBehaviorH
puis j'ai débogué AjaxBehaviorHandler
donc, si vous voulez découvrir la bonne liste d'événements pris en charge, vous pouvez générer une erreur (en utilisant un nom d'événement incorrect) et suivez cette procédure.
Comme la liste des événements possibles n'est pas liée à p:ajax
Mais au composant avec lequel il est utilisé, vous devez demander au composant pour quels événements ajax il prend en charge.
Il existe plusieurs façons de déterminer les événements ajax pour un composant donné:
1) Demander le composant en xhtml:
Vous pouvez sortir la liste directement en xhtml en liant ce composant à une variable de domaine d'application et en imprimant la propriété eventNames
:
<p:autoComplete binding="#{ac}"></p:autoComplete>
<h:outputText value="#{ac.eventNames}" />
Cette sortie
[blur, change, valueChange, click, dblclick, focus, keydown, keypress, keyup,
mousedown, mousemove, mouseout, mouseover, mouseup, select, itemSelect,
itemUnselect, query, moreText, clear]
2) Interrogez le composant Java code:
Identifiez la classe d'implémentation du composant et appelez sa méthode 'implémentation de javax.faces.component.UIComponentBase.getEventNames()
':
import javax.faces.component.UIComponentBase;
public class SomeTest {
public static void main(String[] args) {
dumpEvents(new org.primefaces.component.inputtext.InputText());
dumpEvents(new org.primefaces.component.autocomplete.AutoComplete());
dumpEvents(new org.primefaces.component.datatable.DataTable());
}
private static void dumpEvents(UIComponentBase comp) {
System.out.println(
comp + ":\n\tdefaultEvent: " + comp.getDefaultEventName() + ";\n\tEvents: " + comp.getEventNames());
}
}
Cela génère:
org.primefaces.component.inputtext.InputText@239963d8:
defaultEvent: valueChange;
Events: [blur, change, valueChange, click, dblclick, focus, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, mouseup, select]
org.primefaces.component.autocomplete.AutoComplete@72d818d1:
defaultEvent: valueChange;
Events: [blur, change, valueChange, click, dblclick, focus, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, mouseup, select, itemSelect, itemUnselect, query, moreText, clear]
org.primefaces.component.datatable.DataTable@614ddd49:
defaultEvent: null;
Events: [rowUnselect, colReorder, tap, rowEditInit, toggleSelect, cellEditInit, sort, rowToggle, cellEdit, rowSelectRadio, filter, cellEditCancel, rowSelect, contextMenu, taphold, rowReorder, colResize, rowUnselectCheckbox, rowDblselect, rowEdit, page, rowEditCancel, virtualScroll, rowSelectCheckbox]
) 'rtfm' ;-)
La meilleure option consiste à examiner la documentation du composant utilisé, telle que fournie, espérons-le, par les développeurs du composant, sans se limiter à PrimeFaces. (p:ajax
Peut être attaché à tout composant fournissant des comportements ajax).
L'avantage par rapport aux suggestions précédentes est que la documentation fournit non seulement les noms d'événements, mais également une description améliorée de l'événement potentiellement enrichi d'une classe de type d'événement pouvant être interceptée par un écouteur.
Par exemple, le org.primefaces.event.SelectEvent
En cas de
<p:ajax event="itemSelect" listener="#{anyBean.onItemSelect}"/>
et la signature de la méthode d’écoute public void onItemSelect(SelectEvent)
fournit des données contextuelles supplémentaires sur les événements.
Lorsqu'il n'y a pas de liste explicite d'événements ajax sur un composant dans la documentation PrimeFaces, la liste des rappels sur * javascript peut être utilisée comme événement en supprimant le 'on' et en utilisant le reste comme nom d'événement. Les autres réponses à cette question fournissent également une aide sur ces événements simples.