从angularjs发送多个参数到弹簧控制器

时间:2017-04-27 16:03:37

标签: angularjs spring-restcontroller

如何使用Angular POST向Spring Rest发送多个参数。

以下是我的Spring REST方法。

@RequestMapping(value = "/report/generate", method = RequestMethod.POST)
public byte[] generateReport(@RequestBody Map<String, Object> params, @RequestParam(value = "reportType") ReportType reportType) {

以下是我的AngularJS POST电话。

var req = {
                method : 'POST',
                url : '/report/generate',
                headers : {
                    'Content-Type' : 'application/json'
                },
                data :  {reportType : reportType, params : params }
            }

            var promise = $http(req)
                .then(
                    function successCallback(response) {
                        return response.data;
                    }, function errorCallback(response) {
                        console.log("Error saving client details!! Try again...");
                        return response;
                    }
            );
            return promise; 

第二个参数ReportType是一个类型枚举,因此从AngularJS发送String

2 个答案:

答案 0 :(得分:0)

你的sintax无效

data :  params, reportType

data是一个将作为json发送到您的服务器的对象,您可以根据需要添加任意数量的键值对。

data: {
 whateverKey: whateverValue
 reportType: ReportType
}

https://docs.angularjs.org/api/ng/service/ $ HTTP#交

答案 1 :(得分:0)

您可以使用以下示例代码来构建数据对象。

                    var fd = new FormData();
                    fd.append('key1', value1);
                    fd.append('key2',value2);



var req = {
                method : 'POST',
                url : '/report/generate',
                headers : {
                    'Content-Type' : 'application/json'
                },
                data :  fd
            }

            var promise = $http(req)
                .then(
                    function successCallback(response) {
                        return response.data;
                    }, function errorCallback(response) {
                        console.log("Error saving client details!! Try again...");
                        return response;
                    }
            );
            return promise;