我想针对AJAX请求与常规请求以不同的方式处理错误。
如何在Struts2操作中确定请求是否为AJAX?
您应该检查请求标头X-Requested-With
是否存在并且等于XMLHttpRequest
。
请注意,并非所有AJAX请求都具有此标头,例如,Struts2 Dojo
请求不发送该标头。如果您是使用Struts2-jQuery
(或使用任何其他新的AJAX框架)生成AJAX调用,则该文件就在那里。
您可以使用Firebug's Net module
… 检查它是否存在,例如,当您对Stack Overflow投票时;)
要从中检查它Struts2 Action
,您需要实现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();
我有管理体育锦标赛的项目。它是用PHP/Laravel编写的。我需要在锦标赛运行时,在网页上异步发布比赛结果(“在线”)。我无法决定哪种交流方式更适合我的情况。定期的ajax请求(例如每10秒1个请求)还是WebSockets?你能给我个建议吗?你能不能也提一下这两种方法的利弊?
问题内容: 我想使用C程序来获取网络接口的IP是手动设置还是通过dhcp设置。 我尝试使用以下代码,并且它在Debian中有效,但在OpenWrt中却无效。我想知道如何在OpenWrt中编写一个C程序来执行此操作。我试图用这个: 这段代码在Debian中工作,但是在OpenWrt中却不能正常工作,所以我想知道如何编写程序来获得相同的结果。 问题答案: 对于 OpenWRT, 您可以使用以下命令获取
问题内容: 如何确定变量is 或? 我的代码如下: 但是,如果执行此操作,JavaScript解释器将停止执行。 问题答案: 您可以使用抽象相等运算符的品质来做到这一点: 因为为true,所以上面的代码将同时捕获和。
问题内容: 我在JSF2中使用PrimeFaces。我正在尝试通过将登录名和密码作为Ajax请求发送来对用户进行身份验证。在备用bean的操作方法中,我尝试验证用户,如果验证成功,则重定向到新视图。 使用primefaces可以吗? 因为我认为使用primefaces’ ,所以我只能具有ajax行为或导航。 问题答案: 是的,仅发送重定向而不是(默认)转发作为结果。该稀少JSF 2.0的方式将被追
问题内容: 我将从服务器接收JSON对象或数组,但是我不知道它将是什么。我需要使用JSON,但是要这样做,我需要知道它是对象还是数组。 我正在使用Android。 有没有人有这样做的好方法? 问题答案: 我找到了更好的方法来确定: tokenizer可以返回更多类型:http : //developer.android.com/reference/org/json/JSONTokener.html
问题内容: 我正在使用nodejs和expressjs。我想知道clientRequest对象中是否有类似的东西。我想为Web链接构建baseUrl。因此,如果请求是通过https完成的,我想在所有链接中保留https。 问题答案: 编辑: 对于Express,它更安全,建议使用(如@Andy在下面建议)。尽管它使用类似的实现,但将来可以安全使用,并且还可以选择支持标头。 话虽如此,对于您的用例而