gpt4 book ai didi

javascript - spring Controller 无法从 $http Angular 检索数据

转载 作者:行者123 更新时间:2023-11-28 05:44:21 27 4
gpt4 key购买 nike

我在 Angular 和 Controller 中有一个 $http 函数,但 Controller 在日志打印中不检索从 Angular 发送的数据

Skip CORS processing: response already contains "Access-Control-Allow-Origin" header

我已将 web.xml 文件中的过滤器配置到 header

response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, x-requested-with");

我的 Angular 函数是这个

     app.controller('LoadCardController', function($scope, $http) {

$scope.executor = function() {

var person = {
name : 'Prueba',
todayDate : 1469679969827
};

console.log("DATA=> ", data);

$http({
method : 'POST',
url : 'http://localhost/myWeb/addPerson',
data : person,
headers : {
'Content-Type' : 'application/json'
}
}).then(function successCallback(response) {
console.log("success");
console.log(response);
}, function errorCallback(response) {
console.log("error");
console.log(response);

});
}

});

我的 Controller 是这个...

@ResponseBody
@RequestMapping(path = "/addPerson", method = RequestMethod.POST)
public Person addPerson(final Person person) throws CustomException {

person.setAge("18");
person.setBithDay("15");

LOGGER.trace("Add person with data {}", person);

return person;

}

});
}

当进入 Controller 时,人员的数据为空,对于名称和todayDate属性,这是我以 Angular 发送的。

我的 Controller 现在很简单,因为只返回同一个人对象

最佳答案

从您在此处显示的内容来看,请求似乎正在处理,但数据并未进入 Spring Controller 方法中的 person 参数。可能有几个不同的原因。

首先,请求主体可能没有映射到 Spring Controller 方法的 person 参数。您可以通过在方法参数之前使用 @RequestBody 注释(详细信息 here )来告诉 Spring 自动执行此操作。在您的示例中:

@ResponseBody
@RequestMapping(path = "/addPerson", method = RequestMethod.POST)
public Person addPerson(@RequestBody Person person) throws CustomException {

person.setAge("18");
person.setBithDay("15");

LOGGER.trace("Add person with data {}", person);

return person;

}

如果这不能解决问题,则可能是 Person 类存在问题。至少,它需要具有:

public class Person {
private String name;
private String age;
private String bithday;
private Date todayDate;

public Person() {
// this depends how your serialization is set up
}

// getters and setters...
}

一种约定是使用单独的数据传输对象类(即 PersonDto),它从请求正文中获取数据并用它构建一个 Person 对象(反之亦然),以便您可以控制提交如何映射到后端。有关该模式的更多信息 here .

关于javascript - spring Controller 无法从 $http Angular 检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38668054/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com