我在我的应用程序中使用JSF框架。我需要在“阶段侦听器”类中的渲染响应阶段之前运行特定的脚本。
运行此脚本的条件是,如果触发的请求是Ajax请求,则需要运行该脚本;如果触发的请求是Http请求,则不应运行该脚本。
谁能帮我区分收到的请求吗?
Ajax请求通常具有一个X-Requested-With: XMLHttpRequest请求标头。在JSF中,您可以通过获得请求标头ExternalContext#getRequestHeaderMap()。
X-Requested-With: XMLHttpRequest
ExternalContext#getRequestHeaderMap()
ExternalContext externalContext = facesContext.getExternalContext(); Map<String, String> headers = externalContext.getRequestHeaderMap(); boolean ajax = "XMLHttpRequest".equals(headers.get("X-Requested-With"));