如何添加服務器端所有ajax響應中發送的內容,以便我可以添加自己的參數?A4J AJAX處理程序參數設置從服務器端Java
我已經延長RichFaces的JavaScript的A4J.AJAX.finishRequest
觸發一個自定義事件,我想參數從服務器傳遞給它:
var originalFinishRequest = A4J.AJAX.finishRequest;
A4J.AJAX.finishRequest = function(request) {
var parameters = request.options.parameters;
if (!request._oncomplete_aborted) {
jQuery(document).trigger('onAutofocus',parameters);
}
originalFinishRequest(request);
};
的看着這將是另一種方式,有什麼迴應服務器端調用A4J.AJAX.Submit,我怎麼包裝我自己的代碼呢?
我的解決方案
這是我最後決定將在我的主模板,基於BalusC的回答是:
<a4j:outputPanel ajaxRendered="true">
<c:if test="#{not empty flowScope.autofocusSelectors}">
<script>
document.autofocusSelectors = #{flowScope.autofocusSelectors};
console.log("BASE TEMPLATE: autofocus: (#{flowScope.autofocusSelectors})");
</script>
</c:if>
<script>
console.log("BASE TEMPLATE AJAX RENDER")
//NB: autofocusSelectors not always set, and not only reason to autofocus
jQuery(document).trigger('onAutofocus');
</script>
</a4j:outputPanel>
我試圖用額外的服務器端參數來擴展'request.options.parameters',因爲看起來比拾取全局JS變量更加整潔,因爲我不想在任何地方插入腳本。我不知道ajaxRendered技術,但如果我能夠在我的基本模板中使用它,它看起來像一個很好的解決方案。 –
'request.options.parameters'表示在發送ajax請求之前已經填充的HTTP請求參數映射。這絕對不是服務器端可變的。 – BalusC
我知道'a4j:status onstop',但它已經用於其他事物的代碼中,我相信它只能被定義一次。我也想避免在每個頁面上添加標籤。 –