JSF ajax 事件延迟
JSF ajax event delay
我想使用 JSF 2 为列表实现一个实时过滤器,但是当使用 keyup
事件时,有很多请求被发送到服务器。代码如下所示:
<h:inputText id="filter_input" value="#{bean.filterText}">
<f:ajax event="keyup" listener="#{bean.filter}"
render="@form:list" execute="@this" />
</h:inputText>
从 JSF 2.2 开始,f:ajax
添加了对 ajax 事件延迟的支持。只需将它作为一个属性包含在内,其值以毫秒为单位:
<f:ajax event="keyup" delay="1000" listener="#{someBean.doSomething}"
render="somefield" execute="@this" />
另请参阅:
- Primefaces keyup event delay
- Richfaces a4j event queuing
- Delay a JSF AJAX listener for checkbox group
- JSF 2.1 Ajax autocomplete + server search only after user stops typing
如果您使用的是以前版本的 JSF,PrimeFaces 在 JSF 支持之前就已支持类似功能:
<p:ajax event="keyup" delay="1000" listener="#{bean.filter}"
update="somefield" process="@this" />
请注意,PrimeFace 不使用 render
属性,也不使用 execute
。使用 update
和 process
代替(尽管 process="@this"
是多余的,因为它已经是 p:ajax
的默认值)
这是文档:
https://www.primefaces.org/docs/vdl/5.0/core/primefaces-p/ajax.html
还有一个相关的 post:primefaces keyup event delay
我想使用 JSF 2 为列表实现一个实时过滤器,但是当使用 keyup
事件时,有很多请求被发送到服务器。代码如下所示:
<h:inputText id="filter_input" value="#{bean.filterText}">
<f:ajax event="keyup" listener="#{bean.filter}"
render="@form:list" execute="@this" />
</h:inputText>
f:ajax
添加了对 ajax 事件延迟的支持。只需将它作为一个属性包含在内,其值以毫秒为单位:
<f:ajax event="keyup" delay="1000" listener="#{someBean.doSomething}"
render="somefield" execute="@this" />
另请参阅:
- Primefaces keyup event delay
- Richfaces a4j event queuing
- Delay a JSF AJAX listener for checkbox group
- JSF 2.1 Ajax autocomplete + server search only after user stops typing
如果您使用的是以前版本的 JSF,PrimeFaces 在 JSF 支持之前就已支持类似功能:
<p:ajax event="keyup" delay="1000" listener="#{bean.filter}"
update="somefield" process="@this" />
请注意,PrimeFace 不使用 render
属性,也不使用 execute
。使用 update
和 process
代替(尽管 process="@this"
是多余的,因为它已经是 p:ajax
的默认值)
这是文档: https://www.primefaces.org/docs/vdl/5.0/core/primefaces-p/ajax.html
还有一个相关的 post:primefaces keyup event delay