Play Framework 1.xでは、メソッドを尋ねることでリクエストがAJAXであるかどうかをすばやく知ることができましたが、Play2でrequest.isAjax()
は見つかりません。
代替手段は何ですか、またはこの方法はどこにありますか?
Play Framework 1.xでは、メソッドを尋ねることでリクエストがAJAXであるかどうかをすばやく知ることができましたが、Play2でrequest.isAjax()
は見つかりません。
代替手段は何ですか、またはこの方法はどこにありますか?
JQuery for Ajaxを使用する場合、次のリクエストヘッダーが設定されます。
X-Requested-With: XMLHttpRequest
後でAjax経由で呼び出しが行われたかどうかをテストするためにアクセスできます。
これをメソッドとして定義し、コントローラーで使用できます。
def isAjax[A](implicit request : Request[A]) = {
request.headers.get("X-Requested-With") == Some("XMLHttpRequest")
}
これは、Scala を使用しない人 (私のように) のための単純な Java 実装です。
/**
* Check if the request was made via Ajax or not
* @return
*/
public static Boolean isAjax() {
String requestWithHeader = "X-Requested-With";
String requestWithHeaderValueForAjax = "XMLHttpRequest";
String[] value = request().headers().get(requestWithHeader);
return
value != null &&
value.length > 0 &&
value[0].equals(requestWithHeaderValueForAjax);
}