2016-03-29 39 views
0

使用角度js将参数发送到弹簧应用程序。无法在弹簧应用程序中读取POST参数

在角侧

$http.post('dashboard/processSearch',{processRequestName:'TestName',displayName:'Test'}) 
    .then(function(response) { 
     console.log(response.data); 
    }); 

在控制器侧在弹簧

@RequestMapping(value = "/processSearch", method = RequestMethod.POST) 
@ResponseBody 
public String searchAll(@RequestParam String processRequestName, @RequestParam String displayName) { 

    return processRequestName+"####"+displayName; 
} 

我m到处完整的网页与错误消息Ajax响应

错误 应用在执行时遇到错误操作。 查看下面的错误细节。 错误参考:1459234251503-5

label.error.missingservletrequestparameterexception 
+0

使用浏览器的开发工具来确定它是面向客户端还是服务器端的问题。 – kryger

+0

其服务器端问题。能够在萤火虫中看到后参数 –

+0

在这种情况下,您需要包含确切的堆栈跟踪,这将详细解释问题出在哪里以及在哪里。 – kryger

回答

2

指定把params参数

打破你的HTTP调用不同下来。

$http({ 
    url: dashboard/processSearch, 
    method: "POST", 
    params: {processRequestName: 'TestName', displayName:'Test'} 
}); 

这是通过params的正确方法。

但是你可能需要以类似的方式传递消息头PARAMS

headers: { 
    'Content-Type': undefined 
} 

使用工厂

您还应该在返回结果的工厂方法的HTTP请求。然后,您可以将该工厂添加到您需要的任何控制器。这是您执行控制器的.then部分的地方。

你的厂应该是这个样子

angular.module('yourService', []).factory('YourFactory', [ '$http', function($http){ 
    return{ 
    getStuff: function(){ 
     return // your http request 
    } 
    }; 
}]); 

然后,您可以打电话给你的工厂在你的控制器这样

angular.module('yourCtrlMod', ['yourService']).controller('yourCtrl', [ '$scope','yourFactory', function($scope, yourFactory){ 

    yourFactory.getStuff().then(function(res){ 
    $scope.yourScope= res.data; 
    }); 

}]); 

请注意,这是一个让并非一个职位,你的情况你将不得不发布数据并发送参数。到工厂并填写参数或标题。

+0

感谢您纠正我的角度。春天呢?有没有需要改变 –

+0

没有问题尼廷,我不熟悉春天,但我希望这个答案推动你在正确的方向,祝你好运。 –

相关问题