-1

I am very new to java so may be this question seems duplicate, BUT i spent one day already on this issue. So I need solution now, or any guideline.

I am trying to receive post parameters from front end through web service BUT I am unable to receive any values.

This is my HTML FORM :

<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 to call web service :

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);

}

My controller

@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;
    }
}

I receive null in all post parameters, any idea what I am doing wrong here ? I have seen the network tab on browser and service is sending all the required data correctly

API.CALL fUNCTION

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
    });    
  }
}
Noob Player
  • 279
  • 6
  • 25

1 Answers1

2

Spring controller code

 @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
       }
Shivam
  • 674
  • 1
  • 4
  • 25