Как отличить запросы Ajax от обычных запросов Http? - PullRequest
10 голосов
/ 03 февраля 2011

Я использую JSF-фреймворк в своем приложении.Мне нужно запустить определенный сценарий перед фазой ответа рендеринга в моем классе прослушивателя фазы.

Условием для запуска этого сценария является то, что если запущенный запрос является запросом Ajax, мне нужно запустить сценарий, если запущенный запрос является запросом Http, мне не следует запускать этот сценарий.

Может кто-нибудь, пожалуйста, помогите мне дифференцировать полученные запросы.? 1005 *

Ответы [ 3 ]

18 голосов
/ 03 февраля 2011

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"));
4 голосов
/ 03 февраля 2011

Ajax-запросы устанавливают переменную сервера X-Requested-With в XMLHttpRequest. Вы можете использовать эту информацию, чтобы различать ajax и обычные запросы.

3 голосов
/ 01 февраля 2013
private boolean isAjaxRequest() {
  PartialViewContext partialViewContext = FacesContext.getCurrentInstance().getPartialViewContext();
  return null != partialViewContext && partialViewContext.isAjaxRequest();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...