<p:ajax>事件列表

Cat*_*ish 45 ajax jsf primefaces jsf-2

我搜索过互联网,但找不到<p:ajax>活动清单.任何人都可以提供<p:ajax>标签的完整事件列表吗?

如果有onblur事件或类似事件我特别感兴趣.

Dan*_*iel 34

您可以在PrimeFaces用户指南中搜索"Ajax行为事件",您会发现所有支持的组件都有很多.这也是PrimeFaces在PrimeFaces论坛活动清单中引发的相关问题中,Primeus Prime建议做些什么?<p:ajax>

没有onblur事件,这是HTML属性名称,但有一个blur事件.它只是没有"on"前缀,就像HTML属性名一样.您还可以查看相关组件的标签文档的所有"on*"属性,以查看哪些都可用,例如<p:inputText>.

  • 该文档未列出p:ajax标记的事件.我还希望在网上某处列出一个p:ajax事件列表.我不认为我必须通过源头挖掘才能找到这样的东西.如果有人可以在这里发布所有可能性,那么当下一个人搜索它时他会找到它们会很好.inputText标记上的链接很有用,但我不确定这是否是所有可能的事件.如果是我想在这里发布. (12认同)
  • 每个组件都有一组不同的自定义p:ajax事件,您需要参考用户指南中的每个部分并查找ajax行为事件.所有指南.非自定义事件,如click,keyup未记录,因为它是dom事件的一般知识. (5认同)
  • 是的,你会发现一些事件,但只有一些特殊组件的特殊事件,如Schedule或SelectCheckBoxMenu.您将找不到InputText支持的内容 (3认同)
  • 与先前的评论相反,我有(3.4)的用户指南没有*列出这个的部分. (2认同)
  • **除了**之外,因为很多组件都是复合组件 - 例如:`autoComplete`也是`inputText` ...这看起来很明显**但**它迫使开发人员从多个组装文档片段地方......这是胡说八道.整个文档令人困惑,似乎是随意的,这不是一个真正的答案,它基本上等于*"RTFM,但它很糟糕,你会浪费时间,现在给我SO代表什么都没有"*. (2认同)

Nic*_*rey 32

您可能希望查看"JavaScript HTML DOM Events"以获取事件的一般概述:

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

PrimeFaces是基于jQuery构建的,所以这里是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/

下面,我列出了一些更常见的事件,并提供了有关它们可以使用的位置的注释(取自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>元素上.)


小智 11

Schedule提供各种ajax行为事件来响应用户操作。

  • "dateSelect" org.primefaces.event.SelectEvent 选择日期时。
  • "eventSelect" org.primefaces.event.SelectEvent 选择事件时。
  • "eventMove" org.primefaces.event.ScheduleEntryMoveEvent 当事件被移动时。
  • "eventResize" org.primefaces.event.ScheduleEntryResizeEvent 调整事件大小时。
  • "viewChange" org.primefaces.event.SelectEvent 当视图改变时。
  • "toggleSelect" org.primefaces.event.ToggleSelectEvent 当切换所有复选框更改时
  • "expand" org.primefaces.event.NodeExpandEvent 当一个节点被扩展时。
  • "collapse" org.primefaces.event.NodeCollapseEvent 节点折叠时。
  • "select" org.primefaces.event.NodeSelectEvent 当一个节点被选中时。-
  • "collapse" org.primefaces.event.NodeUnselectEvent 当一个节点被取消选择时
  • "expand org.primefaces.event.NodeExpandEvent 当一个节点被展开时。
  • "unselect" org.primefaces.event.NodeUnselectEvent 当一个节点被取消选择时。
  • "colResize" org.primefaces.event.ColumnResizeEvent 调整列大小时
  • “页面” org.primefaces.event.data.PageEvent 在分页上。
  • "sort" org.primefaces.event.data.SortEvent 对列进行排序时。
  • "filter" org.primefaces.event.data.FilterEvent 关于过滤。
  • "rowSelect" org.primefaces.event.SelectEvent 选择一行时。
  • "rowUnselect" org.primefaces.event.UnselectEvent 取消选择行时。
  • "rowEdit" org.primefaces.event.RowEditEvent 编辑行时。
  • "rowEditInit" org.primefaces.event.RowEditEvent 当一行切换到编辑模式时
  • "rowEditCancel" org.primefaces.event.RowEditEvent 取消行编辑时。
  • "colResize" org.primefaces.event.ColumnResizeEvent 选择列时。
  • "toggleSelect" org.primefaces.event.ToggleSelectEvent 当标题复选框被切换时。
  • "colReorder" - 重新排序列时。
  • "rowSelectRadio" org.primefaces.event.SelectEvent 带单选的行选择。
  • "rowSelectCheckbox" org.primefaces.event.SelectEvent 带有复选框的行选择。
  • "rowUnselectCheckbox" org.primefaces.event.UnselectEvent 行取消选择复选框。
  • "rowDblselect" org.primefaces.event.SelectEvent 双击行选择。
  • "rowToggle" org.primefaces.event.ToggleEvent 行展开或折叠。
  • "contextMenu" org.primefaces.event.SelectEvent ContextMenu 显示。
  • "cellEdit" org.primefaces.event.CellEditEvent 编辑单元格时。
  • "rowReorder" org.primefaces.event.ReorderEvent 行重新排序。

这里还有更多https://www.primefaces.org/docs/guide/primefaces_user_guide_5_0.pdf


Sel*_*ron 8

由于可能的事件列表与p:ajax它本身无关,而是与它所使用的组件相关联,因此您必须询问该组件支持哪些 ajax 事件。

有多种方法可以确定给定组件的 ajax 事件:

1)询问xhtml中的组件

您可以通过将该组件绑定到请求范围的变量并打印eventNames属性来直接在 xhtml 中输出列表:

<p:autoComplete binding="#{ac}"></p:autoComplete>
<h:outputText value="#{ac.eventNames}" />
Run Code Online (Sandbox Code Playgroud)

这输出

[blur, change, valueChange, click, dblclick, focus, keydown, keypress, keyup,
 mousedown, mousemove, mouseout, mouseover, mouseup, select, itemSelect,
 itemUnselect, query, moreText, clear]
Run Code Online (Sandbox Code Playgroud)

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

}
Run Code Online (Sandbox Code Playgroud)

这输出:

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]
Run Code Online (Sandbox Code Playgroud)

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”并将剩余部分用作事件名称,将 on* javascript 回调列表用作事件。这个问题中的其他答案也为这些普通的 dom 事件提供了帮助。


Dan*_*lor 5

不幸的是,有关Ajax事件的文献很少,我还没有找到任何完整的列表。例如,用户指南v。3.5列出了的itemChange事件p:autoComplete,但是忘记提及change事件。

如果要确定支持哪些事件:

  1. 下载并解压primefaces源jar
  2. 查找在其中定义了组件的JavaScript文件(例如,大多数表单组件(如forms.jsSelectOneMenu中定义的))
  3. 搜索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);
    }
},
Run Code Online (Sandbox Code Playgroud)