【问题标题】:angularJs, Spring MVC : how to send data to Spring controllerangularJs,Spring MVC:如何将数据发送到 Spring 控制器
【发布时间】:2016-09-21 22:14:30
【问题描述】:

我正在尝试将图像从我的网络应用程序发送到我的 Spring RestController;但我没有设法投射我收到的对象。

ANGULARJS - 控制器:

myModule.controller('InscriptionCtrl',function($location, $http){

    var self = this;

    self.credentials = {};

    self.register = function(credentials){

        var FormRegisterDto = credentials ? {
            login : credentials.login, 
            password : credentials.password,
            title : credentials.title,
            name : credentials.name,
            firstname : credentials.firstname,
            age : credentials.age,
            email : credentials.email,
            streetNum : credentials.streetNum,
            streetBister : credentials.streetBister,
            streetName : credentials.streetName,
            city : credentials.city,
            postalCode : credentials.postalCode,
            country : credentials.country
        } : {};

        var fd = new FormData();

        fd.append('data', angular.toJson(FormRegisterDto));
        fd.append("file", this.myImage);

        $http.post(
                '/register-user', 
                fd,
                {
                    transformRequest: angular.identity,
                    headers: {'Content-Type': undefined}
                }
        ).then(
            function(response){
                // success
            },
            function(){
                // error
            }
        );
    };
});

我的 Spring RestController 正确接收数据和文件,因为如果我打印“数据”,它正在写入:{“login”:“aaaaaaaaaa”,“password”:“aaaaaaaaaaaaA”,“title”:“M” ,"电子邮件":"aaaaaaaaaa@aaaaaaaaaa"}

我的问题是我想将对象“数据”转换为我的类“FormRegisterDto”,其中包含“字符串登录”、“字符串密码”等属性...

我的 JAVA 代码:

@RequestMapping(value = "/register-user-blob", produces = "application/json")
public FormRegisterResponseDto registerUserWithBlob(
        @RequestParam(value="file", required=false) MultipartFile file,
        @RequestParam(value="data") Object data){


    FormRegisterRequestDto request = (FormRegisterRequestDto) data; // it doesn't works

    System.out.println(data); // it show {"login":"aaaaaaaaaa","password":"aaaaaaaaaaaA","title":"M","email":"aaaaaaaaaa@aaaaaaaaaa"}

    return new FormRegisterResponseDto();
}

你知道怎么做吗?谢谢;)。

【问题讨论】:

    标签: angularjs spring spring-mvc casting spring-restcontroller


    【解决方案1】:

    您的 Object dataString 类型,因此您不能将其转换为 FormRegisterRequestDto,您应该在前端序列化对象,将其转换为 json 字符串(似乎在此点),而不是像这样使用 Gson google 的库

    Gson gson = new Gson();
    FormRegisterRequestDto dto=gson.fromJson(data, FormRegisterRequestDto.class);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 2012-09-09
      • 2013-10-25
      • 2012-01-29
      • 2019-04-20
      • 1970-01-01
      相关资源
      最近更新 更多