2016-07-09 10 views
0

私はこのように、Spring MVCのコントローラにAJAX要求を送信しています:ajaxリクエストデータをクラスとしてSpring mvc controllerに送信するにはどうすればいいですか?

var filters = { 
    visual: visual, 
    Name: params['Name'], 
    Address: params['Address'], 
    documentType: params['documentType'], 
    itemQualifier: getItemQualifier(), 
    itemIdentifier: params['itemIdentifier'], 
    currency: getCurrency(), 
    sellSide: getSellSide() 
}; 

$.ajax({                  
    type: "POST", 
    url: "/reports/savefilters", 
    data: filters, 
    success: function(response) { 
     alert('filters saved successfully: ' + response); 
    }, 
    error: function(e) { 
     alert('Error while saving filters: ' + e.message); 
    } 
}); 
@RequestMapping(value = "/savefilters", method = RequestMethod.POST) 
public @ResponseBody String saveFilters(@RequestParam("visual") String visual, @RequestParam(value = "Name[]", required = false) String[] Name, 
     @RequestParam(value = "Address[]", required = false) String[] Address, @RequestParam(value = "documentType[]", required = false) String[] documentType, 
     @RequestParam("itemQualifier") String itemQualifier, @RequestParam(value = "itemIdentifier[]", required = false) String[] itemIdentifier, @RequestParam("currency") String currency, 
     @RequestParam("sellSide") String sellSide, HttpServletRequest request) 
{ 
    try 
    { 
     System.out.println("saveFilters"); 
     new DisplayService().saveFilters("ID", visual, Name, Address, documentType, itemQualifier, itemIdentifier, currency, sellSide); 
     return "success"; 
    } 
    catch (Exception ex) 
    { 
     return "error occured while inserting/updating db"; 
    } 
} 

私が代わりに次のように送るのクラスとして、これらすべての引数を渡したいです。

AJAX呼び出しからクラスとして渡すにはどうすればいいですか?Spring MVCコントローラコードでどのように受け取ることができますか?何か提案してください?ありがとう。

+0

可能な重複:http://stackoverflow.com/questions/10198335/basic-spring-mvc-data-bindingコメント@RoryMcCrossanため –

+0

感謝。私はこの投稿が私の質問に答えないと思う。モデル属性を試しましたが、動作しません。 – Hemachandra

答えて

1

リクエストオブジェクトを使用すると、次のようにすべてのパラメータを取得できます。

public @ResponseBody String saveFilters(HttpServletRequest request){ 

String visual = request.getParameter("visual") 

} 
+0

応答をありがとう。ビジュアルのような単一の値で動作していますが、名前のような配列パラメータでは動作しません。 request.getParameterValues()メソッドを使って配列の値を取得しようとしましたが、取得できませんでした。 – Hemachandra

+0

配列の場合は、を使用して配列の配列を取得し、それを処理する必要があります。 Map parameterMap = request.getParameterMap(); http://stackoverflow.com/questions/7312436/spring-mvc-how-to-get-all-request-params-in-a-map-in-spring-controller問題が解決された場合は、答えを正しいものとして受け入れてください:) –

+0

これは、keyとvalueが両方の文字列である場合に機能します。値がnullの場合valueはpartnerNameのような配列です。 – Hemachandra

0

ちょうどあなたのJavascriptの変数、filtersにJavaクラスのマッチングを作成します。

public class Filters { 
    private String name; 
    private List<String> address; 
    private List<String> documentType; 
    private String itemQualifer; 
    private String itemIdentifier; 
    private String Currency; 
    private String sellSide; 

    // getters and setters must exists but I omitted for brevity. 
} 

MVCコントローラ:

@RequestMapping(value = "/savefilters", method = RequestMethod.POST) 
public @ResponseBody String saveFilters(Filters filters) { 

} 
+0

お返事ありがとうございます。このコードでは、リクエストがspring mvc controllerに到達していません。 – Hemachandra

+0

私のソリューションに適用する際に例外が発生することを意味しますか? – inherithandle

+0

私は例外は見当たりませんでしたが、リクエストがコントローラに届いていません – Hemachandra

関連する問題