インターネットを検索しましたが、<p:ajax>
イベントのリストが見つかりません。誰でも<p:ajax>
タグのイベントの完全なリストを提供できますか?
onblur
イベントまたは類似のイベントがある場合、特に興味があります。
"Ajax Behavior Events"を PrimeFaces User's Guide で検索できます。サポートされているすべてのコンポーネント用。また、PrimeFacesがOptimus PrimeがPrimeFacesフォーラム <p:ajax>
イベントリストでこの関連する質問で行うことを提案しているのは何ですか?
onblur
イベントはありません。これはHTML属性名ですが、blur
イベントがあります。 HTML属性名のように "on"プレフィックスがないだけです。また、問題のコンポーネントの tagドキュメントのすべての「on *」属性を調べて 、どのコンポーネントが利用可能かを確認できます。 <p:inputText>
。
イベントの一般的な概要については、「JavaScript HTML DOMイベント」をご覧ください。
http://www.w3schools.com/jsref/dom_obj_event.asp
PrimeFacesはjQuery上に構築されているため、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/
以下に、より一般的なイベントのいくつかを、それらを使用できる場所に関するコメントとともにリストしました(jQueryのドキュメントから引用)。
マウスイベント
(どのHTML要素でもこれらのイベントを受け取ることができます。)
click
dblclick
mousedown
mousemove
mouseover
mouseout
mouseup
キーボードイベント
(これらのイベントは任意の要素にアタッチできますが、イベントはフォーカスのある要素にのみ送信されます。フォーカス可能な要素はブラウザによって異なる場合がありますが、フォーム要素は常にフォーカスを取得できるため、これらのイベントタイプの妥当な候補です。)
keydown
keypress
keyup
フォームイベント
blur
(最近のブラウザでは、イベントのドメインがすべての要素タイプを含むように拡張されました。)
change
(このイベントは、<input>
要素、<textarea>
ボックス、および<select>
要素に制限されています。)
focus
(このイベントは、フォーム要素(<input>
、<select>
など)やリンク(<a href>
)などの要素の限定セットに暗黙的に適用されます。最近のブラウザーバージョンでは、要素のtabindexプロパティを明示的に設定することにより、イベントを拡張してすべての要素タイプを含めることができます。要素は、Tabキーを押すか、要素をマウスでクリックします。)
select
(このイベントは<input type="text">
フィールドと<textarea>
ボックスに制限されています。)
submit
(<form>
要素にのみ添付できます。)
残念ながら、Ajaxイベントの文書化は不十分で、包括的なリストは見つかりませんでした。たとえば、ユーザーガイドv。3.5では、p:autoComplete
の-itemChangeイベントがリストされていますが、changeイベントの言及は忘れています。
どのイベントがサポートされているかを知りたい場合:
SelectOneMenu
などのほとんどのフォームコンポーネントはforms.jsで定義されています)this.cfg.behaviors
リファレンスを検索たとえば、このセクションは、SelectCheckboxMenu
コンポーネントのtoggleSelect eventの起動を担当します。
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);
}
},
スケジュールは、ユーザーアクションに応答するためのさまざまなAjax動作イベントを提供します。
ここにもっとあります https://www.primefaces.org/docs/guide/primefaces_user_guide_5_0.pdf
デバッグモードでリストを取得しました。最初にエラーがスローされたポイントを見ました
javax.faces.view.facelets.TagException:/showcase/partial_submit.xhtml @ 26,36 Event:changedはサポートされていません。 org.primefaces.component.behavior.ajax.AjaxBehaviorHandler.applyAttachedObject(AjaxBehaviorHandler.Java:179)org.primefaces.component.behavior.ajax.AjaxBehaviorHandler.apply(AjaxBehaviorHandler.Java:157)
そして、AjaxBehaviorHandlerをデバッグしました
サポートされているイベントの正しいリストを見つけたい場合は、エラーを生成して(間違ったイベント名を使用して)、この方法に従ってください。
可能なイベントのリストはp:ajax
自体ではなく、それが使用されるコンポーネントに関連付けられているため、サポートするAjaxイベントをコンポーネントに問い合わせる必要があります。
特定のコンポーネントのajaxイベントを決定するには、複数の方法があります。
1)xhtmlのコンポーネントに尋ねる:
コンポーネントをリクエストスコープ変数にバインドし、eventNames
プロパティを出力することにより、リストをxhtmlで直接出力できます。
<p:autoComplete binding="#{ac}"></p:autoComplete>
<h:outputText value="#{ac.eventNames}" />
この出力
[blur, change, valueChange, click, dblclick, focus, keydown, keypress, keyup,
mousedown, mousemove, mouseout, mouseover, mouseup, select, itemSelect,
itemUnselect, query, moreText, clear]
2)Java codeでコンポーネントを確認します:
コンポーネント実装クラスを把握し、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());
}
}
この出力:
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]
3) 'rtfm';-)
最適なオプションは、PrimeFaces btwに限らず、コンポーネント開発者から提供されることを期待して、使用中の特定のコンポーネントのドキュメントを調べることです。 (p:ajax
は、ajaxの動作を提供するコンポーネントに添付できます)。
以前の提案に対する利点は、ドキュメントがイベント名を提供するだけでなく、リスナーがキャッチできるイベントタイプクラスで潜在的に強化されたイベントの拡張された説明も提供することです。
たとえば、次の場合のorg.primefaces.event.SelectEvent
<p:ajax event="itemSelect" listener="#{anyBean.onItemSelect}"/>
リスナーメソッドシグネチャpublic void onItemSelect(SelectEvent)
は、追加のイベントコンテキストデータを提供します。
PrimeFacesドキュメントのコンポーネントにajaxイベントの明示的なリストがない場合、on * javascriptコールバックのリストは、「on」を削除し、残りをイベント名として使用することでイベントとして使用できます。この質問の他の回答は、これらの単純なdomイベントに関するヘルプも提供します。