无法在POST请求中接收参数,Spring - java

时间:2017-10-03 06:30:24

标签: java spring

我对java很新,所以可能这个问题似乎重复,但我已经花了一天时间在这个问题上。所以我现在需要解决方案,或任何指南。

我正在尝试通过网络服务从前端接收帖子参数但是我无法接收任何值。

这是我的HTML表单:

<form role="form" id="" name="" method="post">
    <div class="form-group associateTypeFormGroup">
        <label class="control-label">Associate Type : </label>
        <select class="form-control associateType" id="associateType" name="associateType">
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
        </select>
    </div>
    <div class="form-group datasetNameFormGroup">
        <label class="control-label">Dataset Name : </label>
        <input type="text" class="form-control" name="datasetName" id="datasetName" />
    </div>
    <div class="form-group daterangeFormGroup">
        <label class="control-label">Date Range : </label>
        <input type="text" class="form-control daterange" name="daterange" id="daterange" data-time-picker="true" data-time-picker-increment="5" data-format="YYYY-MM-DD h:mm:ss A">
    </div>
    <div class="form-group listaFormGroup">
        <label class="control-label">List A : </label>
        <textarea class="form-control" id="lista" name="lista"></textarea>
    </div>
    <div class="form-group listbFormGroup">
        <label class="control-label">List B : </label>
        <textarea class="form-control" id="listb" name="listb"></textarea>
    </div>
    <div class="form-group minimumCallingFormGroup" style="display:none;">
        <label class="control-label">Minimum Calling : </label>
        <select class="form-control" id="minimumCalling" name="minimumCalling">
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
        </select>
    </div>
    <div class="form-group">
        <input type="button" class="btn btn-success" value="SUBMIT" onclick="return get_values(this);" />
    </div>
</form>

调用网络服务的JS功能:

function get_values() {

    associateType = $("#associateType").find(":selected").val();
    datasetName = $("#datasetName").val();
    startdate = $('#daterange').data('daterangepicker').startDate.toISOString().split('.')[0] + "Z";
    enddate = $('#daterange').data('daterangepicker').endDate.toISOString().split('.')[0] + "Z";
    if ($("#lista").val() != "")
        lista = '\'' + $("#lista").val().split(',').join('\',\'') + '\'';
    if ($("#listb").val() != "")
        listb = '\'' + $("#listb").val().split(',').join('\',\'') + '\'';
    minimumCalling = $('#minimumCalling').find(":selected").val();

    var cdrReqParams = {};
    cdrReqParams.associateType = associateType;
    cdrReqParams.datasetName = datasetName;
    cdrReqParams.fromDate = startdate;
    cdrReqParams.toDate = enddate;
    cdrReqParams.listA = lista;
    cdrReqParams.listB = listb;
    cdrReqParams.minimumCalling = minimumCalling;
    var jsonStr = JSON.stringify(cdrReqParams);
    API.call("save_associate.json", 'POST', function(data) {
        console.log(data);
    }, function(error) {
        console.log(error);
    }, jsonStr);

}

我的控制器

@RestController
public class AssociateController {
    @RequestMapping(value = "/associate", method = RequestMethod.GET)
    public ModelAndView associateIndex() {
        ModelAndView mav = null;
        mav = new ModelAndView("associate.html");
        return mav;
    }

    @Layout(Layout.NONE)
    @RequestMapping(value = "/save_associate.json", method = RequestMethod.POST)
    public @ResponseBody AjaxResponseBody save_associate(HttpServletRequest request, Model model) throws Exception {

        AssociateParams params = new AssociateParams();

        try {
            params.setAssociateType(request.getParameter("associateType"));
            params.setDatasetName(request.getParameter("datasetName"));
            params.setFromDate(request.getParameter("fromDate"));
            params.setToDate(request.getParameter("toDate"));
            params.setListA(request.getParameter("listA"));
            params.setListB(request.getParameter("listB"));
            params.setMinimumCalling(request.getParameter("minimumCalling"));

            System.out.println("+++ Associate Controller +++");
            System.out.println(params.getAssociateType());
            System.out.println(params.getDatasetName());
            System.out.println(params.getFromDate());
            System.out.println(params.getToDate());
            System.out.println(params.getListA());
            System.out.println(params.getAssociateType());
            System.out.println(params.getAssociateType());

        } catch(Exception e){
             e.printStackTrace();
        }
        finally{
             //dbHelper.closeDBConnection(conn);
        }
        return null;

    }
}

Associateparams.java

public class AssociateParams {
    private String associateType;
    private String datasetName;
    private String fromDate;
    private String toDate;
    private String listA;
    private String listB;
    private String minimumCalling;

    public String getAssociateType() {
        return associateType;
    }
    public void setAssociateType(String associateType) {
        this.associateType = associateType;
    }
    public String getDatasetName() {
        return datasetName;
    }
    public void setDatasetName(String datasetName) {
        this.datasetName = datasetName;
    }
    public String getFromDate() {
        return fromDate;
    }
    public void setFromDate(String fromDate) {
        this.fromDate = fromDate;
    }
    public String getToDate() {
        return toDate;
    }
    public void setToDate(String toDate) {
        this.toDate = toDate;
    }
    public String getListA() {
        return listA;
    }
    public void setListA(String listA) {
        this.listA = listA;
    }
    public String getListB() {
        return listB;
    }
    public void setListB(String listB) {
        this.listB = listB;
    }
    public String getMinimumCalling() {
        return minimumCalling;
    }
    public void setMinimumCalling(String minimumCalling) {
        this.minimumCalling = minimumCalling;
    }
}

我在所有帖子参数中都收到了null,知道我在这里做错了什么吗? 我已经看到浏览器和服务上的网络选项卡正在正确发送所有必需的数据

API.CALL功能

var API = {
  call:function(url,type,successcallback,errorCallback,data){
    var data = (!!data) ? data : {};
    var callback = (!!callback) ? callback : function(){};
    $.ajax({
      contentType : "application/json",
      dataType: "json",
      //crossDomain: true,
      xhrFields: { withCredentials: true }, 
      url: url,
      data:data,
      type:type,
      success:successcallback,
      error:errorCallback
    });    
  }
}

1 个答案:

答案 0 :(得分:1)

Spring控制器代码

 @RequestMapping(value = "/save_associate.json", method = RequestMethod.POST)
    public @ResponseBody String  save_associate(@RequestBody AssociateParams associateParams , HttpServletRequest request) {
           String asscociateType = associateParams.getAssociateType();

           // For other parameters use as abaove
           // your logic next
       }