由于可能的事件列表并不与public void onItemSelect(SelectEvent)本身相关,而是与它所使用的组件相关联,因此您必须询问该组件所支持的ajax事件。
确定给定组件的ajax事件有多种方法:
1)询问xhtml中的组件:
通过将该组件绑定到请求范围变量并打印public void onItemSelect(SelectEvent)属性,可以直接在xhtml中输出列表:
这个输出
[blur, change, valueChange, click, dblclick, focus, keydown, keypress, keyup,
mousedown, mousemove, mouseout, mouseover, mouseup, select, itemSelect,
itemUnselect, query, moreText, clear]
2)在Java代码中询问组件:
找出组件实现类并调用public void onItemSelect(SelectEvent)方法的实现:
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。 (public void onItemSelect(SelectEvent)可以连接到任何提供ajax行为的组件)。
与以前的建议相比,优点在于文档不仅提供了事件名称,而且还提供了对事件的增强描述,并可能添加了可以由侦听器捕获的事件类型类。
例如public void onItemSelect(SelectEvent)
public void onItemSelect(SelectEvent)
侦听器方法签名public void onItemSelect(SelectEvent)提供了其他事件上下文数据。
如果PrimeFaces文档中没有关于组件的Ajax事件的明确列表,则可以通过删除on并将其余部分用作事件名称,来将on * javascript回调列表用作事件。 这个问题的其他答案也为这些普通的dom事件提供了帮助。