您应该检查请求标头
X-Requested-With是否存在并且等于
XMLHttpRequest。
请注意,并非所有AJAX请求都具有此标头,例如,
Struts2Dojo请求不发送该标头。如果您是使用
Struts2-jQuery(或使用任何其他新的AJAX框架)生成AJAX调用,则该文件就在那里。
您可以使用
Firebug's Net module… 检查它是否存在,例如,当您对Stack Overflow投票时;)
要从中检查它
Struts2Action,您需要实现
ServletRequestAware接口,然后获取
Request并检查是否存在特定的标头,如下所示:
public class MyAction extends ActionSupport implements ServletRequestAware { private HttpServletRequest request; public void setRequest(HttpServletRequest request) { this.request = request; } public HttpServletRequest getRequest() { return this.request; } public String execute() throws Exception{ boolean ajax = "XMLHttpRequest".equals(getRequest().getHeader("X-Requested-With")); if (ajax) log.debug("This is an AJAX request"); else log.debug("This is an ordinary request"); return SUCCESS; } }请注意,您也可以通过ActionContext获取请求,而无需实现ServletRequestAware接口,但这不是推荐的方法:
HttpServletRequest request = ServletActionContext.getRequest();



