Spring MVC – jQuery Ajax Postサンプルのリファクタリング
jQuery AjaxフォームのPOSTとSpring MVCの例を確認すると、次のパターンがわかります。
Spring MVCでは、@RequestParamを使用してAjaxPOSTデータを受け入れます。
@RequestMapping(value = "/path-to/hosting/save", method = RequestMethod.POST)
@ResponseBody
public String saveHosting(
@RequestParam int id, @RequestParam String domain, @RequestParam String name,
@RequestParam String desc, @RequestParam String tags, @RequestParam String afflink,
@RequestParam boolean display, @RequestParam boolean hosting,
@RequestParam boolean cdn, @RequestParam boolean paas,
@RequestParam String imageUrl, @RequestParam String favUrl,
@RequestParam String whoisPattern
) {
//...do something
}
上記のコードは正常に機能していますが、少し奇妙で保守が困難です。 Javascript$.postとSpring MVC@RequestParamの両方が処理しているパラメーターが多すぎます。
1. JavaScriptのリファクタリング
Javascriptでは、$.ajaxを使用し、すべてを配列に格納して、SpringMVCにPOSTすることを好みます。
2. Spring MVCのリファクタリング
2.1 Create a POJO to store the Ajax POST data.
public class HostingForm {
private boolean display;
private boolean cdn;
private boolean hosting;
private boolean paas;
private String whoisPattern;
private long id;
private String domain;
private String name;
private String desc;
private String tags;
private String affLink;
private String imageUrl;
private String favUrl;
//getters and setters
2.2 Accept the Ajax POST data with @RequestBody
@RestController
//...
@RequestMapping(value = "/path-to/hosting/save", method = RequestMethod.POST)
public String updateHosting(@RequestBody HostingForm hostingForm) {
//...
}
@RequestBodyを使用すると、SpringはPOSTデータをHostingForm POJO(名前で)に自動的にマップします。 完了しました。
Note
このチュートリアルに興味を持ってください–Complete Spring 4 MVC + Ajax Form Post example