Spring MVC - jQuery Ajaxのリファクタリングの例

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