【问题标题】:How to get the multiple data objects from ajax to my controller in spring mvc如何在spring mvc中从ajax获取多个数据对象到我的控制器
【发布时间】:2017-05-08 21:07:09
【问题描述】:

这里第一个 ajax 通过点击 url 'getMergeRuleMaxCount' 成功地点击了我的控制器,但是当我尝试点击这个 url 'getMergingDatasets' 这样我的控制就到达了控制器,我可以在控制器中获取由 ajax 发送的 数据,首先我无法进入控制器,它给了我一些下面提到的异常。 根据我的理解,将多个数据发送到我的控制器时会出现问题。

我没有得到我做错了什么,我应该如何在我的控制器中获取数据?

任何机构可以告诉我可能的解决方案吗?

例外

WARN : org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.hcl.ae.model.MergeRule com.hcl.ae.controller.MergeRuleController.getMergingDatasets(javax.servlet.http.HttpServletRequest,com.hcl.ae.model.MergeRule) throws java.io.IOException

Merge.js

function mergingDataSetValidation(){
            var company = $("#company").val();
            if (company=="") {
                alert("Please select company");
            }
            var companyClass = $("#companyClass").val();
            var companyName = jQuery("#company").find("option[value='" + jQuery("#company").val() + "']").text();
            var className = jQuery("#companyClass").find("option[value='" + jQuery("#companyClass").val() + "']").text();
            $
                    .ajax({
                        type : "GET",
                        url : "getMergeRuleMaxCount",
                        success : function(data) {
                            var count = data;
                            var  selectedValue = "Merge_" + companyName + "_" + className + "_Rule_" + count;
                            $("#mergeRuleName").val(selectedValue);

                                    var parameter = {
                                            "companyId": company,
                                            "classId" : companyClass 
                                        };

                                    $
                                    .ajax({
                                        type : "GET",
                                        url : "getMergingDatasets",
                                        dataType: "json",
                                        contentType: "application/json; charset=utf-8",
                                        data : JSON.stringify(parameter),
                                        /*data : 'company=' + company  + '&class=' + companyClass,*/
                                        success : function(data) {
                                            alert("success");
                                            return;
                                        },
                                        error: function(error) {
                                            alert("Error occured while fetching merging datasets..!!")
                                        }   
                                    });

                        },
                        error: function(error) {
                            alert("Something went wrong..!!, please refresh the page and try again.")
                        }
                    });
        };

控制器

    @JsonView(Views.Public.class)
    @RequestMapping(value = "/getMergingDatasets",method = RequestMethod.GET)
    public @ResponseBody MergeRule getMergingDatasets(HttpServletRequest req, @RequestBody MergeRule parameter) throws IOException {

        System.out.println(parameter.getCompanyId());
        System.out.println(parameter.getClassId());

/*      System.out.println(req.getParameter("company"));
        System.out.println(req.getParameter("companyClass"));*/

        List<DropdownMenu> mergingDatasets = mergeRuleDAO.getMergingDataSets(parameter.getCompanyId(), parameter.getClassId());

        return (MergeRule) mergingDatasets;
    }

【问题讨论】:

    标签: javascript java json ajax spring-mvc


    【解决方案1】:

    您的 MergeRule 必须包含所有 Ajax 参数。但是你的控制器使用get,所以你不能使用@RequestBody,你需要两个@RequestParam
    如:

    @RequestMapping(value = "/getMergingDatasets",method = RequestMethod.GET)
        public @ResponseBody MergeRule getMergingDatasets(HttpServletRequest req, @RequestParam String companyId, @RequestParam String classId) throws IOException {
        System.out.println(companyId);
        System.out.println(classId);
    
        /*System.out.println(req.getParameter("company"));
         System.out.println(req.getParameter("companyClass"));*/
    
        List<DropdownMenu> mergingDatasets = mergeRuleDAO.getMergingDataSets(companyId, classId);
    
        return (MergeRule) mergingDatasets;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-11-12
      • 2013-05-08
      • 2016-05-06
      • 2019-09-27
      • 2015-11-11
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      相关资源
      最近更新 更多