找出ResourceRequest是否是AJAX请求

时间:2012-02-27 07:56:39

标签: java ajax jsf richfaces portlet

有没有办法找出ResourceRequest是否是AJAX请求?

我们正在使用JBoss RichFaces 3.3.3,JBoss Portlet Bridge 2.1和Java Portlet API 2.0

2 个答案:

答案 0 :(得分:1)

return !StringUtils.isEmpty(request.getParameter("AJAXREQUEST"));

答案 1 :(得分:0)

AJAX请求带有一个名为X-Requested-With的特殊标头,它应该等于“XMLHttpRequest”。所以跨框架的方式可能是:

public static boolean isAjaxRequest(ResourceRequest request) {
   String request_header = request.getProperty("X-Requested-With");
   return (request_header!=null)&&(request_header.equalsIgnoreCase("XMLHttpRequest"));
}

问题是某些Ajax请求可能没有此标头,不同的门户容器可能会以不同的方式实现它。

这是来自PortletRequest的Java文档:

  

的getProperty

     

java.lang.String getProperty(java.lang.String name)

     

以String形式返回指定请求属性的值。如果请求不包含指定名称的属性,则此   方法返回null。   portlet可以访问portal / portlet-container   通过此方法的特定属性以及标头(如果可用)   HTTP客户端请求。