【问题标题】:How to pass Multiple Class Object in $http Request如何在 $http 请求中传递多个类对象
【发布时间】:2017-11-11 00:23:51
【问题描述】:

我的要求是在 Angular $http 服务中传递多个类对象(它将与请求参数或请求正文映射到 rest 控制器)。

我无法在请求正文中传递类对象,因为一个 http 调用只有一个请求正文。

当我尝试在 $http 参数中传递类对象时,我遇到了类转换异常。

有没有办法在单个 $http 调用中传递多个对象??

@RequestMapping(value = "CommitObject", method = RequestMethod.POST)
public void Commit(@RequestParam(value = "clazz") final String clazz,
        @RequestParam(value = "Id") final String modelId,@RequestBody LinkedHashMap<String, Object> obj) {
    mService.Commit(Id,clazz workingmodelObj);
}

【问题讨论】:

  • 在我的问题中添加了代码。

标签: javascript java angularjs http spring-mvc


【解决方案1】:

我尝试了很多次,但总是失败。所以为了克服这个问题,我创建了一个 Java Bean 并将两个对象封装到其中,然后在 @RequestBody 中接受它。

您的 Wrapper 应该如下所示:

public class SampleWrapper {
    private Object1 object1;
    private Object2 object2;
    //getters setters and constructors go here
}

你的构造函数应该是这样的:

@RequestMapping(value = "/url",method= RequestMethod.POST)
public String getRequest(@RequestBody SampleWrapper wrapper) {
    Object1 o1 = wrapper.getObject1();
    Object2 o2 = wrapper.getObject2();
}

JSON 请求应如下所示:

 {
 "object1" : {//object1 body },
 "object2" : {//object2 body }
 }

【讨论】:

    【解决方案2】:

    如果您尝试发出 $http.post 请求,您可以创建一个您尝试发送的对象数组,然后将其附加到请求中。

    $http.put('ROUTE HERE', 对象数组);

    【讨论】:

      【解决方案3】:

      您可以通过将对象附加到 formData 中来传递对象

      角边

      var formData=new FormData();
      formData.append("obj1",new Blob([JSON.stringify(obj1)],{type: "application/json"}));
      formData.append("obj2",new Blob([JSON.stringify(obj2)],{type: "application/json"}));
      http({
           method: 'POST',
           url: '/MyProject/requestUrl',
           headers: { 'Content-Type': undefined},//to set boundary value by default
           data: formData,
          })
      

      弹簧侧

      @RequestMapping(value = { "/requestUrl" }, consumes = { "multipart/form-data" }, method = RequestMethod.POST)
      @ResponseBody
      public String getRequest(@RequestPart("obj1") Object1 object1,
              @RequestPart("obj2") Object2 Object2,HttpSession session)
              throws IOException {
      
              //implementation
      }
      

      【讨论】:

      • 实际上我尝试了相同的方法,但我没有使用 stringify,而是创建了 Object 的映射并将其作为请求主体传递,它工作得非常好,所有参数都映射到休息控制器但是当我尝试投射 Object (map .get(key)) 进入我的 java 类我得到类转换异常
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 2021-05-31
      • 2022-10-06
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多