我在h:inputText标记内有一个f:ajax标记,对keyup事件进行ajax调用:
<h:inputText id="searchinput" value="#{tvShowForm.name}"> <f:ajax event="keyup" render="results" listener="#{tvShowForm.search}" /> </h:inputText>
解决方法
听起来你想要合并事件,例如这将等待
在发出ajax请求之前半秒钟,以及输入的任何输入
积分将包括在内.但是你不会为每个角色发出一个ajax请求
类型.
在发出ajax请求之前半秒钟,以及输入的任何输入
积分将包括在内.但是你不会为每个角色发出一个ajax请求
类型.
<h:inputText onkeyup="keyupHandler();"/> ... <script> var keystrokeTimeout; keyupHandler = function(event) { var minChars = 4; var len = $(this).val().length; if((len != 0) && (len < minChars)) { return; } var ajaxRequest = function() { jsf.ajax.request('results',null,{ execute: 'results',render: 'results' }); } clearTimeout(keystrokeTimeout); keystrokeTimeout = setTimeout(ajaxRequest,500); // millisecs } </script>
这远远不像你想做的那样吗?
编辑:另一个建议是你看看Richfaces 4 a4j:队列功能.
这允许组合事件,例如,如果你曾经在键盘场景中
当你的当前ajax请求只完成一个时,它依靠你的键盘
请求将被发送.也可以指定请求延迟并忽略陈旧
响应. Richfaces没有做出的重大错误(那些素数确实如此)就是这样
RF使用与JSF实现相同的底层队列,因此您没有风险
无序处理.
我很感激,如果您还没有使用这个库,那么这不是一个小步骤.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。