簡體   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