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