Spring MVC - рефакторинг примера jQuery Ajax Post

Spring MVC - рефакторинг jQuery Ajax Post пример

Изучив пример POST и Spring MVC jQuery Ajax, найдите следующие шаблоны:

В Spring MVC используйте@RequestParam, чтобы принять данные Ajax POST.

    @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, хранить все в массиве и отправлять его в Spring MVC.

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 с POJOHostingForm (по имени). Готово.

Note
Этот урок вас заинтересовал -Complete Spring 4 MVC + Ajax Form Post example