55

我搜索了互联网,但找不到<p:ajax>事件列表。谁能提供<p:ajax>标签的完整事件列表?

onblur如果有活动或类似的事情,我特别感兴趣。

4

7 回答 7

43

您可能想查看“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>元素。)

于 2014-03-28T15:22:45.880 回答
40

您可以在PrimeFaces User's Guide中搜索“Ajax 行为事件”,您会发现所有受支持组件的大量此类事件。这也是 PrimeFaces 领导 Optimus Prime 在 PrimeFaces 论坛活动列表中的相关问题中建议做的事情?<p:ajax>

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

于 2012-07-20T21:19:15.873 回答
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 对列进行排序时。
  • “过滤器” 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

于 2017-11-06T17:47:51.057 回答
8

由于可能的事件列表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 事件提供了帮助。

于 2019-08-23T11:46:09.447 回答
6

不幸的是,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);
    }
},
于 2014-02-07T09:26:52.490 回答
3

我的列表处于调试模式;首先我看到了引发错误的地方

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

在此处输入图像描述

所以如果你想发现支持事件的正确列表,你可以生成一个错误(使用错误的事件名称),然后按照这种方式

于 2016-09-17T10:29:27.340 回答
1

这是我在调试过程中发现的。

在此处输入图像描述

于 2020-09-10T14:36:10.910 回答