【问题标题】:Finding out if ResourceRequest is AJAX request查明 ResourceRequest 是否为 AJAX 请求
【发布时间】:2012-02-27 07:56:39
【问题描述】:

有没有办法查明ResourceRequest 是否是 AJAX 请求?

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

【问题讨论】:

    标签: java ajax jsf richfaces portlet


    【解决方案1】:
    return !StringUtils.isEmpty(request.getParameter("AJAXREQUEST"));
    

    【讨论】:

      【解决方案2】:

      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 文档:

      获取属性

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-27
        • 1970-01-01
        • 2021-06-25
        • 2012-01-20
        • 2012-01-03
        • 1970-01-01
        相关资源
        最近更新 更多