我搜索了互联网,但找不到<p:ajax>
事件列表。谁能提供<p:ajax>
标签的完整事件列表?
onblur
如果有活动或类似的事情,我特别感兴趣。
我搜索了互联网,但找不到<p:ajax>
事件列表。谁能提供<p:ajax>
标签的完整事件列表?
onblur
如果有活动或类似的事情,我特别感兴趣。
您可能想查看“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>
等)和链接( )。在最近的浏览器版本中,可以通过显式设置元素的tabindex属性<a href>
来扩展该事件以包括所有元素类型. 元素可以通过键盘命令(例如Tab键)或通过鼠标单击元素获得焦点。)
select
(此事件仅限于<input type="text">
字段和<textarea>
框。)
submit
(它只能附加到<form>
元素。)
您可以在PrimeFaces User's Guide中搜索“Ajax 行为事件”,您会发现所有受支持组件的大量此类事件。这也是 PrimeFaces 领导 Optimus Prime 在 PrimeFaces 论坛活动列表中的相关问题中建议做的事情?<p:ajax>
没有onblur
事件,即 HTML 属性名称,但有一个blur
事件。它只是没有像 HTML 属性名称那样的“on”前缀。您还可以查看相关组件的标签文档的所有“on*”属性,以查看哪些都是可用的,例如<p:inputText>
.
Schedule 提供各种 ajax 行为事件来响应用户操作。
这里还有更多https://www.primefaces.org/docs/guide/primefaces_user_guide_5_0.pdf
由于可能的事件列表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代码中询问组件:
找出组件实现类并调用它的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 顺便说一句。(p:ajax
可以附加到任何提供 ajax 行为的组件)。
与以前的建议相比的优势在于,文档不仅提供了事件名称,而且还提供了对事件的增强描述,该描述可能通过一个可以被侦听器捕获的事件类型类来丰富。
例如org.primefaces.event.SelectEvent
在这种情况下
<p:ajax event="itemSelect" listener="#{anyBean.onItemSelect}"/>
侦听器方法签名public void onItemSelect(SelectEvent)
提供额外的事件上下文数据。
如果 PrimeFaces 文档中的组件上没有明确的 ajax 事件列表,则可以通过删除“on”并将其余部分用作事件名称,将 on* javascript 回调列表用作事件。这个问题中的其他答案也为这些普通的 dom 事件提供了帮助。
不幸的是,Ajax 事件的文档记录很差,我还没有找到任何完整的列表。例如,用户指南 v. 3.5 列出了itemChange事件p:autoComplete
,但忘记提及change事件。
如果您想了解支持哪些事件:
SelectOneMenu
中定义的)this.cfg.behaviors
参考资料例如,该部分负责在组件中启动toggleSelect事件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);
}
},
我的列表处于调试模式;首先我看到了引发错误的地方
javax.faces.view.facelets.TagException:/showcase/partial_submit.xhtml @26,36 事件:不支持更改。org.primefaces.component.behavior.ajax.AjaxBehaviorHandler.applyAttachedObject(AjaxBehaviorHandler.java:179) org.primefaces.component.behavior.ajax.AjaxBehaviorHandler.apply(AjaxBehaviorHandler.java:157)
然后我调试了 AjaxBehaviorHandler
所以如果你想发现支持事件的正确列表,你可以生成一个错误(使用错误的事件名称),然后按照这种方式