繁体   English   中英

JSF同时ajax调用

[英]JSF simultaneous ajax calls

JSF是否可以进行将同时执行的ajax调用(在开始新的调用之前不等待先前的调用完成)?

不,它们被规范明确地排队,没有任何例外。 参见JSF 2规范的第13.3.2章:

13.3.2 Ajax请求队列

在将所有Ajax请求发送到服务器之前,必须将它们放入客户端请求队列中,以确保按发送顺序处理Ajax请求。 在队列中等待时间最长的请求是下一个要发送的请求。 发送请求后,Ajax请求回调函数必须从队列中删除该请求(也称为出队)。 如果请求成功完成,则必须将其从队列中删除。 如果发生错误,则必须通知客户端,但仍必须从队列中删除该请求,以便可以发送下一个请求。 必须发送下一个请求(队列中最旧的请求)。 有关Ajax请求队列的更多详细信息,请参阅jsf.ajax.request JavaScript文档。

这样做是为了确保服务器端除其他范围内的作用域bean之外的线程安全。

为了防止页面或某些表单的所谓“查看状态”出现问题,请对AJAX请求进行序列化。

JSF-Extensionshttps://www.intersult.com/wiki/page/JSF%20Ext )为您提供了并行化AJAX请求的选项。 只需将JavaScript变量jsf.ajaxQueue设置为不同于默认值1的另一个值。但是,如果您不锁定来自相同表单或相同区域的呈现中的手动重复请求,则会出现错误。

这是激活并行请求的方式:

<script type="text/javascript">
    if (jsf)
        jsf.ajaxQueue = 2;
</script>

例如,您可以使用<e:async>并行处理页面服务器上的呈现。 大多数应用程序不需要并行请求,因为在严格序列化时它们运行良好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM