webentwicklung-frage-antwort-db.com.de

Liste der <p: ajax> -Ereignisse

Ich habe im Internet gesucht und kann keine Liste von <p:ajax> Veranstaltungen. Kann jemand eine vollständige Liste der Ereignisse für die <p:ajax> Etikett?

Mich interessiert besonders, ob es ein onblur -Ereignis oder ähnliches gibt.

44
Catfish

Sie können nach "Ajax-Verhaltensereignissen" in PrimeFaces-Benutzerhandbuch suchen, und Sie finden viele davon für alle unterstützten Komponenten . Dies ist auch das, was PrimeFaces-Chef Optimus Prime in dieser verwandten Frage im PrimeFaces-Forum vorschlägt <p:ajax> Ereignisliste?

Es gibt kein onblur -Ereignis, das ist der HTML-Attributname, aber es gibt ein blur -Ereignis. Es ist nur ohne das Präfix "on" wie als HTML-Attributname. Sie können auch alle "on *" - Attribute der Tag-Dokumentation der betreffenden Komponente prüfen, um festzustellen, welche verfügbar sind, z. <p:inputText> .

33
Daniel

Unter "JavaScript HTML DOM-Ereignisse" finden Sie eine allgemeine Übersicht über Ereignisse:

http://www.w3schools.com/jsref/dom_obj_event.asp

PrimeFaces basiert auf jQuery. Hier ist die Dokumentation zu jQuery "Events":

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/

Nachfolgend habe ich einige der am häufigsten auftretenden Ereignisse aufgelistet und Kommentare dazu, wo sie verwendet werden können (aus der jQuery-Dokumentation entnommen).

Mausereignisse

(Jedes HTML-Element kann diese Ereignisse empfangen.)

click

dblclick

mousedown

mousemove

mouseover

mouseout

mouseup

Tastaturereignisse

(Diese Ereignisse können an jedes Element angehängt werden, aber das Ereignis wird nur an das Element gesendet, das den Fokus hat. Fokussierbare Elemente können zwischen den Browsern variieren, Formularelemente können jedoch immer den Fokus erhalten, sodass dies sinnvolle Kandidaten für diese Ereignistypen sind.)

keydown

keypress

keyup

Formularereignisse

blur (In den letzten Browsern wurde die Domäne des Ereignisses um alle Elementtypen erweitert.)

change (Dieses Ereignis ist auf <input> - Elemente, <textarea> - Felder und <select> - Elemente beschränkt.)

focus (Dieses Ereignis gilt implizit für eine begrenzte Anzahl von Elementen, z. B. Formularelemente (<input>, <select> usw.) und Links (<a href>). In neueren Browserversionen kann das Ereignis durch explizites Setzen der Eigenschaft tabindex des Elements auf alle Elementtypen erweitert werden. Ein Element kann über Tastaturbefehle wie die Taste Tab oder durch Mausklicks auf das Element den Fokus erhalten.)

select (Dieses Ereignis ist auf die Felder <input type="text"> und <textarea> beschränkt.)

submit (Kann nur an <form> - Elemente angehängt werden.)

30
Nick Humphrey

Leider sind Ajax-Ereignisse schlecht dokumentiert und ich habe keine umfassende Liste gefunden. Zum Beispiel listet User Guide v. 3.5 das Ereignis itemChange für p:autoComplete Auf, vergisst jedoch, das Ereignis change zu erwähnen.

Wenn Sie herausfinden möchten, welche Ereignisse unterstützt werden:

  1. Downloaden und entpacken Sie die Quelldatei von primefaces
  2. Suchen Sie die JavaScript-Datei, in der Ihre Komponente definiert ist (die meisten Formularkomponenten wie SelectOneMenu sind beispielsweise in forms.js definiert).
  3. Suchen Sie nach this.cfg.behaviors - Referenzen

In diesem Abschnitt wird beispielsweise das toggleSelect -Ereignis in der SelectCheckboxMenu -Komponente gestartet:

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);
    }
},
5
Danubian Sailor

Schedule bietet verschiedene Ajax-Verhaltensereignisse, um auf Benutzeraktionen zu reagieren.

  • "dateSelect" org.primefaces.event.SelectEvent Wenn ein Datum ausgewählt ist.
  • "eventSelect" org.primefaces.event.SelectEvent Wenn ein Ereignis ausgewählt wird.
  • "eventMove" org.primefaces.event.ScheduleEntryMoveEvent Wenn ein Ereignis verschoben wird.
  • "eventResize" org.primefaces.event.ScheduleEntryResizeEvent Wenn die Größe eines Ereignisses geändert wird.
  • "viewChange" org.primefaces.event.SelectEvent Wenn eine Ansicht geändert wird.
  • "toggleSelect" org.primefaces.event.ToggleSelectEvent Beim Umschalten aller Kontrollkästchenänderungen
  • "expand" org.primefaces.event.NodeExpandEvent Wenn ein Knoten expandiert wird.
  • org.primefaces.event.NodeCollapseEvent "reduzieren" Wenn ein Knoten reduziert wird.
  • "select" org.primefaces.event.NodeSelectEvent Bei Auswahl eines Knotens.-
  • org.primefaces.event.NodeUnselectEvent "reduzieren" Wenn ein Knoten nicht ausgewählt ist
  • "expand org.primefaces.event.NodeExpandEvent Wenn ein Knoten erweitert wird.
  • "unselect" org.primefaces.event.NodeUnselectEvent Wenn ein Knoten nicht ausgewählt ist.
  • "colResize" org.primefaces.event.ColumnResizeEvent Wenn die Größe einer Spalte geändert wird
  • "Seite" org.primefaces.event.data.PageEvent Bei Paginierung.
  • "sort" org.primefaces.event.data.SortEvent Wenn eine Spalte sortiert wird.
  • "filter" org.primefaces.event.data.FilterEvent Beim Filtern.
  • "rowSelect" org.primefaces.event.SelectEvent Wenn eine Zeile ausgewählt wird.
  • "rowUnselect" org.primefaces.event.UnselectEvent Wenn eine Zeile abgewählt wird.
  • "rowEdit" org.primefaces.event.RowEditEvent Wenn eine Zeile bearbeitet wird.
  • "rowEditInit" org.primefaces.event.RowEditEvent Wenn eine Zeile in den Bearbeitungsmodus wechselt
  • "rowEditCancel" org.primefaces.event.RowEditEvent Wenn die Zeilenbearbeitung abgebrochen wird.
  • "colResize" org.primefaces.event.ColumnResizeEvent Wenn eine Spalte ausgewählt wird.
  • "toggleSelect" org.primefaces.event.ToggleSelectEvent Wenn das Kontrollkästchen für die Kopfzeile aktiviert ist.
  • "colReorder" - Wenn Spalten neu angeordnet werden.
  • "rowSelectRadio" org.primefaces.event.SelectEvent Zeilenauswahl mit Radio.
  • "rowSelectCheckbox" org.primefaces.event.SelectEvent Zeilenauswahl mit Checkbox.
  • "rowUnselectCheckbox" org.primefaces.event.UnselectEvent Deaktivieren Sie die Zeile mit dem Kontrollkästchen.
  • "rowDblselect" org.primefaces.event.SelectEvent Zeilenauswahl mit Doppelklick.
  • "rowToggle" org.primefaces.event.ToggleEvent Zeile erweitern oder reduzieren.
  • Anzeige "contextMenu" org.primefaces.event.SelectEvent ContextMenu.
  • "cellEdit" org.primefaces.event.CellEditEvent Wenn eine Zelle bearbeitet wird.
  • "rowReorder" org.primefaces.event.ReorderEvent Bei Zeilenumordnung.

hier finden Sie weitere Informationen https://www.primefaces.org/docs/guide/primefaces_user_guide_5_0.pdf

3
Boris_Ndong

Ich habe die Liste im Debug-Modus; zuerst habe ich den punkt gesehen, an dem der fehler geworfen wurde

javax.faces.view.facelets.TagException: /showcase/partial_submit.xhtml @ 26,36 Ereignis: geändert wird nicht unterstützt. org.primefaces.component.behavior.ajax.AjaxBehaviorHandler.applyAttachedObject (AjaxBehaviorHandler.Java:179) org.primefaces.component.behavior.ajax.AjaxBehaviorHandler.apply (AjaxBehaviorHandler.Java:157)

und dann habe ich AjaxBehaviorHandler getestet

enter image description here

wenn Sie also die richtige Liste der unterstützten Ereignisse ermitteln möchten, können Sie einen Fehler generieren (unter Verwendung eines falschen Ereignisnamens) und auf diese Weise vorgehen

2
Frizz1977

Da die Liste der möglichen Ereignisse nicht an p:ajax Selbst gebunden ist, sondern an die Komponente, mit der sie verwendet wird, müssen Sie die Komponente fragen, für welche Ajax-Ereignisse sie unterstützt.

Es gibt mehrere Möglichkeiten, die Ajax-Ereignisse für eine bestimmte Komponente zu bestimmen:

1) Fragen Sie die Komponente in xhtml:

Sie können die Liste direkt in xhtml ausgeben, indem Sie diese Komponente an eine Variable mit Anforderungsbereich binden und die Eigenschaft eventNames drucken:

<p:autoComplete binding="#{ac}"></p:autoComplete>
<h:outputText value="#{ac.eventNames}" />

Dies gibt aus

[blur, change, valueChange, click, dblclick, focus, keydown, keypress, keyup,
 mousedown, mousemove, mouseout, mouseover, mouseup, select, itemSelect,
 itemUnselect, query, moreText, clear]

2) Fragen Sie die Komponente in Java code:

Finden Sie die Implementierungsklasse der Komponente heraus und rufen Sie deren Implementierung der Methode javax.faces.component.UIComponentBase.getEventNames() auf:

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());
    }

}

Dies gibt aus:

[email protected]:
    defaultEvent: valueChange;
    Events: [blur, change, valueChange, click, dblclick, focus, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, mouseup, select]
[email protected]:
    defaultEvent: valueChange;
    Events: [blur, change, valueChange, click, dblclick, focus, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, mouseup, select, itemSelect, itemUnselect, query, moreText, clear]
[email protected]:
    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' ;-)

Die beste Möglichkeit besteht darin, in die Dokumentation der jeweiligen verwendeten Komponente zu schauen, wie sie von den Komponentenentwicklern bereitgestellt wird, und nicht nur in PrimeFaces. (p:ajax Kann an jede Komponente angehängt werden, die Ajax-Verhalten bietet.).

Der Vorteil gegenüber früheren Vorschlägen besteht darin, dass die Dokumentation nicht nur die Ereignisnamen enthält, sondern auch eine erweiterte Beschreibung des Ereignisses, die möglicherweise mit einer Ereignistypklasse angereichert ist, die von einem Listener abgefangen werden kann.

Zum Beispiel das org.primefaces.event.SelectEvent Im Fall von

<p:ajax event="itemSelect" listener="#{anyBean.onItemSelect}"/>

die Signatur der Listener-Methode public void onItemSelect(SelectEvent) stellt zusätzliche kontextbezogene Ereignisdaten bereit.

Wenn es in der PrimeFaces-Dokumentation keine explizite Liste von Ajax-Ereignissen auf einem Compoment gibt, kann die Liste der Rückrufe bei * Javascript als Ereignis verwendet werden, indem das "Ein" entfernt und der Rest als Ereignisname verwendet wird. Die anderen Antworten in dieser Frage bieten auch Hilfe zu diesen einfachen Dom-Ereignissen.

1
Selaron