我在我的應用程序中使用JSF框架。我需要在階段偵聽器類的呈現響應階段之前運行特定的腳本。如何區分來自正常Http請求的Ajax請求?
運行此腳本的條件是,如果觸發的請求是需要運行腳本的Ajax請求,如果觸發的請求是Http請求,我不應該運行該腳本。
任何人都可以請幫我區分接收的請求。
我在我的應用程序中使用JSF框架。我需要在階段偵聽器類的呈現響應階段之前運行特定的腳本。如何區分來自正常Http請求的Ajax請求?
運行此腳本的條件是,如果觸發的請求是需要運行腳本的Ajax請求,如果觸發的請求是Http請求,我不應該運行該腳本。
任何人都可以請幫我區分接收的請求。
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"));
如果您使用的RF然後`的request.getParameter (「AJAXREQUEST」)== null`也可以工作 – 2011-02-03 12:10:08
Ajax請求將服務器變量X-Requested-With
設置爲XMLHttpRequest
。您可以使用該信息來區分ajax和普通請求。
private boolean isAjaxRequest() {
PartialViewContext partialViewContext = FacesContext.getCurrentInstance().getPartialViewContext();
return null != partialViewContext && partialViewContext.isAjaxRequest();
}
可能會感興趣:http://stackoverflow.com/questions/216173/differentiating-between-an-ajax-call-browser-request – SuperSaiyan 2011-02-03 12:14:47