我搜索了互联网,但找不到<p:ajax>
个活动的列表。任何人都可以提供<p:ajax>
代码的完整事件列表吗?
如果有onblur
事件或类似事件,我会特别感兴趣。
答案 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 事件,但忘记提及更改事件。
如果您想知道支持哪些事件:
SelectOneMenu
在 forms.js 中定义)this.cfg.behaviors
个参考例如,此部分负责在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行为事件以响应用户操作。
这里有更多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
因此,如果您想要发现支持的事件的正确列表,您可以生成错误(使用错误的事件名称),并按照这种方式
答案 6 :(得分:0)