Я использую фреймворк JSF в своем приложении. Мне нужно запустить конкретный script до этапа ответа рендеринга в моем классе Phase Listener.
Условие для запуска этого script заключается в том, что если инициированный запрос является запросом Ajax, мне нужно запустить script, если инициированный запрос является запросом Http, я не должен запускать этот script.
Кто-нибудь может помочь мне дифференцировать полученные запросы?
Ответ 1
Запросы Ajax обычно содержат заголовок запроса X-Requested-With: XMLHttpRequest
. В JSF вы можете получить заголовки запросов ExternalContext#getRequestHeaderMap()
.
ExternalContext externalContext = facesContext.getExternalContext();
Map<String, String> headers = externalContext.getRequestHeaderMap();
boolean ajax = "XMLHttpRequest".equals(headers.get("X-Requested-With"));
Ответ 2
Запросы Ajax устанавливают переменную сервера X-Requested-With
на XMLHttpRequest
. Вы можете использовать эту информацию, чтобы различать ajax и обычные запросы.
Ответ 3
private boolean isAjaxRequest() {
PartialViewContext partialViewContext = FacesContext.getCurrentInstance().getPartialViewContext();
return null != partialViewContext && partialViewContext.isAjaxRequest();
}