2017-05-21 14 views
2

Ajaxを使用してPUTリクエストを送信したいとします。私は必要な情報を要求します:newNavigation。Ajaxを使用したPUTリクエスト(Spring処理中)

PUT要求:

var newNavigation; 
var newInputNavigation = document.getElementById('newInputNavigation'); 
newNavigation = newInputNavigation.value; 

function editNavigation() { 
    var prefix = '/airline/'; 
    $.ajax({ 
     type: 'PUT', 
     url: prefix +'flights/' + idAction.replace('edit',''), 
     data: { 
      navigation: newNavigation 
     }, 
     success: function(receive) { 
      $("#adminTable").empty(); 
      $("#informationP").replaceWith(receive); 
      $("#hiddenLi").removeAttr('style'); 
     }, 
     error: function() { 
      alert('Error edited flight'); 
     } 
    }); 
} 

コントローラー:

private final String prefix = "/airline/"; 

@RequestMapping(value = prefix + "/flights/{id}", method = RequestMethod.PUT) 
    @ResponseBody 
    public String updateFlight(@PathVariable("id") String id, @RequestParam("navigation") String navigation) { 
     String returnText = "Flight edited successful"; 
     String str1 = navigation; 
     String str2 = id; 
     return returnText; 
    } 

エラー:

PUT http://localhost:8080/airline/flights/11 400() 

質問:

どのようにPUTリクエストを必要なデータ(newNavigation)で送信しますか?

Springコントローラでのデータ(newNavigation)の取得方法は?

EDIT:

追加さNavigationDTO:

public class NavigationDTO implements Serializable{ 
    public String navigation; 
    public NavigationDTO() { 
     super(); 
    } 
} 

変更コントローラ:

@RequestMapping(value = prefix + "/flights/{id}", method = RequestMethod.PUT) 
    @ResponseBody 
    public String updateFlight(@PathVariable("id") String id, @RequestBody NavigationDTO navigation) { 
     String returnText = "Flight edited successful"; 
     String str1 = navigation.navigation; 
     String str2 = id; 
     return returnText; 
    } 

エラー:

PUT http://localhost:8080/airline/flights/8 415() 
+0

オブジェクト「ナビゲーション」からナビゲーション属性にアクセスすることができますか? –

+0

@AmerQarabsaプライベート最終文字列プレフィックス= "/ airline /"; – bsuart

答えて

1
@RequestParam("navigation") 

RequestParamは、あなたのナビゲーションがそうではありません、要求ヘッダー内のパラメータであることを意味し、あなたがそれをデシリアライズする必要があるので、ナビゲーションは、あなたのペイロードです。

春にJacksonが使用されているため、パラメータとしてnavigationを持つPOJOクラスを作成する必要があります。クラスは直列化可能である必要があります。オブジェクト

public String updateFlight(@PathVariable("id") String id, @RequestBody NavigationDto navigation) { //NavigationDto is the Pojo class 

で解析されたペイロードを格納し、あなたの方法の使用@RequestBodyで

その後、簡単にあなたのプレフィックスの値が何であるかを

+0

PUT http:// localhost:8080/airline/flights/8 415() – bsuart

+0

ajaxリクエストにコンテンツタイプを含める必要があります。application/jsonです。 –

関連する問題