无法在spring应用程序中读取POST参数

时间:2016-03-29 07:07:58

标签: java jquery angularjs spring

我使用角度js将参数发布到spring应用程序。

在角侧

$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;
}

我在ajax响应中获得完整的网页,并显示错误消息

错误     应用程序在执行操作时遇到错误。     请参阅下面的错误详情     错误参考:1459234251503-5

label.error.missingservletrequestparameterexception

1 个答案:

答案 0 :(得分: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; 
  });

}]);

请注意,这是针对get而不是帖子,在您的情况下,您必须发布数据并发送参数。到工厂并填写参数或标题。