I want to handle errors differently for AJAX requests vs normal requests.
How do I identify whether a request is AJAX or not in Struts2 actions ?
I want to handle errors differently for AJAX requests vs normal requests.
How do I identify whether a request is AJAX or not in Struts2 actions ?
The other alternative, which I use is to add the parameter ajax=true to all Ajax url strings and test in my action with an isAjax() method.
You should check if the Request Header
X-Requested-With
is present and equals toXMLHttpRequest
.Note that not all the AJAX requests have this header, for example
Struts2 Dojo
requests don't send it; if you instead are generating AJAX calls withStruts2-jQuery
(or with any other new AJAX framework), it is there.You can check if it's present by using
Firebug's Net module
... for example, when you vote on Stack Overflow ;)To check it from within a
Struts2 Action
, you need to implement theServletRequestAware
interface, then get theRequest
and check if that particular header is there like this:Note that you can obtain the request via ActionContext too, without implementing the ServletRequestAware interface, but it is not the recommended way: