Как добавить серверную сторону, что отправлено во всех ответах 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' представляет собой карту параметров запроса HTTP, которая уже заполнена перед отправкой запроса ajax. Это определенно не изменяет со стороны сервера. – BalusC
Мне было известно о 'a4j: status onstop', но он уже используется в коде для других вещей, и я считаю, что он может быть определен только один раз.Я также хочу, чтобы не добавлять теги на каждую страницу. –