Play フレームワークで Json によってレンダリングされた配列を使用して ajax リクエストを送信する際に、いくつかの問題があります。まず、私のコードを見てください。
$('#changeCategory').click(function(){
var categoryOrder = $('#categories').sortable('toArray');
$.ajax({
'type': 'POST',
'url': '@routes.ImageUploader.categoryOrderUpdate()',
'data': {'categoryOrder': categoryOrder},
'dataType': 'json',
'success': function(data){
alert('success_' + data);
}
});
});
ajax リクエストを「POST」として ImageUploader.categoryOrderUpdate() に送信しようとしました。categoryOrder
以下のような配列です。
最初にこのコードを試したとき、エラーAction Not Found For request 'GET /categoryOrderUpdate'
This is unexpected error が発生しました。これは、ajax リクエストを POST として定義POST /categoryOrderUpdate controllers.ImageUploader.categoryOrderUpdate()
し、ルート ファイルでも定義したためです。これが私の最初の質問です。私の ajax リクエストが「POST」で送信されないのはなぜですか?
さらに、Java コントローラーでこの配列を受け取る方法はありますか? Scala で書かれた例はいくつか見ましたが、Java の例は見つかりませんでした。以下のコードを使用しようとしましたが、null ポインター例外がスローされ続けました。
@BodyParser.Of(BodyParser.Json.class)
public static Result categoryOrderUpdate() {
JsonNode jsonRequest = request().body().asJson().findPath("categoryOrder");
私のルートファイル:
# ImageUploader
GET /imageUpload controllers.ImageUploader.mainPage()
POST /imageUpload controllers.ImageUploader.imageUploader()
POST /imagePath controllers.ImageUploader.pathCalculator()
GET /categoryAdd controllers.ImageUploader.categoryAdder()
POST /categoryOrderUpdate controllers.ImageUploader.categoryOrderUpdate()