<p:ajax>事件列表</p:ajax>

时间:2012-07-20 20:51:09

标签: ajax jsf jsf-2 primefaces

我搜索了互联网,但找不到<p:ajax>个活动的列表。任何人都可以提供<p:ajax>代码的完整事件列表吗?

如果有onblur事件或类似事件,我会特别感兴趣。

7 个答案:

答案 0 :(得分:31)

您可以在PrimeFaces User's Guide中搜索“Ajax行为事件”,您会发现所有受支持的组件都有很多。这也是PrimeFaces在PrimeFaces论坛上提出的相关问题中PrimeT Prime建议做的事情<p:ajax> event list?

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

答案 1 :(得分:29)

您可能希望查看&#34; JavaScript HTML DOM事件&#34;有关事件的一般概述:

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

PrimeFaces建立在jQuery之上,所以这里是jQuery&#34;事件&#34;文档:

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 属性来扩展事件以包括所有元素类型。元素可以通过键盘命令获得焦点,例如选项卡键,或通过鼠标点击元素。)

select(此活动仅限于<input type="text">个字段和<textarea>框。)

submit(它只能附加到<form>元素。)

答案 2 :(得分:4)

不幸的是,Ajax事件记录很少,我没有找到任何全面的列表。例如,用户指南v.3.5列出了p:autoComplete itemChange 事件,但忘记提及更改事件。

如果您想知道支持哪些事件:

  1. 下载并解包primefaces source jar
  2. 找到定义组件的JavaScript文件(例如,大多数表单组件,如SelectOneMenu forms.js 中定义)
  3. 搜索this.cfg.behaviors个参考
  4. 例如,此部分负责在SelectCheckboxMenu组件中启动 toggleSelect 事件:

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

答案 3 :(得分:3)

计划提供各种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取消选择某个节点时
  • “展开org.primefaces.event.NodeExpandEvent展开节点时。
  • “取消选择”org.primefaces.event.NodeUnselectEvent取消选择某个节点时。
  • “colResize”org.primefaces.event.ColumnResizeEvent调整列的大小
  • “page”org.primefaces.event.data.PageEvent on pagination。
  • “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 display。
  • “cellEdit”org.primefaces.event.CellEditEvent编辑单元格时。
  • “rowReorder”org.primefaces.event.ReorderEvent在行重新排序。

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

答案 4 :(得分:3)

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

答案 5 :(得分:2)

我已经在调试模式下获得了列表; 首先,我看到了抛出错误的点

  

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

enter image description here

因此,如果您想要发现支持的事件的正确列表,您可以生成错误(使用错误的事件名称),并按照这种方式

答案 6 :(得分:0)

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

enter image description here