Java ModelAttribute为空

Java ModelAttribute为空,java,ajax,spring-mvc,spring-boot,Java,Ajax,Spring Mvc,Spring Boot,我用弹簧靴2 控制器部件 @PostMapping("template/new/samplings") @ResponseBody public SamplingsDto save(@ModelAttribute SamplingsDto samplings) { return samplingsService.save(samplings); } 我试着保存一个表单 $("#samplingsForm").submit(function (e){ e.preventDefau

我用弹簧靴2

控制器部件

@PostMapping("template/new/samplings")
@ResponseBody
public SamplingsDto save(@ModelAttribute SamplingsDto samplings) {
    return samplingsService.save(samplings);
}
我试着保存一个表单

$("#samplingsForm").submit(function (e){
    e.preventDefault();

    var receptionDate =  $("#samplingsReceptionDatePicker").data('daterangepicker').startDate.format('YYYY-MM-DD');
    var buildDate =  $("#samplingsBuildDatePicker").data('daterangepicker').startDate.format('YYYY-MM-DD');

    var form = transForm.serialize('#samplingsForm');

    form.receptionDate=receptionDate;
    form.buildDate=buildDate;

    form = JSON.stringify(form);

    $.ajax({
        type:"post",
        url: "/template/new/samplings",
        data: form,
        contentType: "application/json",
        dataType : "json",
        success: function(data){
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
        }
    });

});
chrome请求的有效负载是

{ 采样ID:, 建设日期:2018-06-20, 接收日期:2018-06-20, productTypesId:1, 产品编号:15, }

服务器模型上的属性字段为空

编辑


首先,为SamplingsDto的属性添加setter和getter。我也会用Lombok作为setter/getter

public class SamplingsDto {
    private Integer samplingsId;

    private Integer productTypesId;

    private Integer productsId;

    private LocalDate receptionDate;

    private LocalDate buildDate;

    public Integer getSamplingsId() {
        return samplingsId;
    }

    public void setSamplingsId(Integer samplingsId) {
        this.samplingsId = samplingsId;
    }

    public Integer getProductTypesId() {
        return productTypesId;
    }

    public void setProductTypesId(Integer productTypesId) {
        this.productTypesId = productTypesId;
    }

    public Integer getProductsId() {
        return productsId;
    }

    public void setProductsId(Integer productsId) {
        this.productsId = productsId;
    }

    public LocalDate getReceptionDate() {
        return receptionDate;
    }

    public void setReceptionDate(LocalDate receptionDate) {
        this.receptionDate = receptionDate;
    }

    public LocalDate getBuildDate() {
        return buildDate;
    }

    public void setBuildDate(LocalDate buildDate) {
        this.buildDate = buildDate;
    }
}
然后您可以按如下方式使用它:

@PostMapping("template/new/samplings")
public SamplingsDto save(@RequestBody SamplingsDto samplings) {
    return samplingsService.save(samplings);
}

您需要创建RESTWebService来接收此请求。 添加@RestController注释并将标题设置为application/json。
我希望这能帮助您解决您的问题。

您能分享SamplingsDto和chrome->inspect->network->right click on request->copy as curl中形成的curl请求吗,查看使用@modeldattribute annotation.samplingsdt的最佳用例,您共享的是您的所有类还是片段?是的,您需要提供setter,以便spring将值放入这些属性中。只有片段。。
@PostMapping("template/new/samplings")
public SamplingsDto save(@RequestBody SamplingsDto samplings) {
    return samplingsService.save(samplings);
}