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>.
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行为事件来响应用户操作。
这里还有更多https://www.primefaces.org/docs/guide/primefaces_user_guide_5_0.pdf
由于可能的事件列表与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 事件提供了帮助。
不幸的是,有关Ajax事件的文献很少,我还没有找到任何完整的列表。例如,用户指南v。3.5列出了的itemChange事件p:autoComplete,但是忘记提及change事件。
如果要确定支持哪些事件:
SelectOneMenu中定义的))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)
| 归档时间: |
|
| 查看次数: |
202193 次 |
| 最近记录: |