【发布时间】: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
有没有办法查明ResourceRequest 是否是 AJAX 请求?
我们正在使用JBoss RichFaces 3.3.3、JBoss Portlet Bridge 2.1 和Java Portlet API 2.0。
【问题讨论】:
标签: java ajax jsf richfaces portlet
return !StringUtils.isEmpty(request.getParameter("AJAXREQUEST"));
【讨论】:
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 客户端请求。
【讨论】: