angularJs、Spring MVC:如何将数据发送到 Spring 控制器
angularJs, Spring MVC : how to send data to Spring controller
我正在尝试将图像从我的网络应用程序发送到我的 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 正确接收数据和文件,因为如果我打印 "data",它正在写入:{"login":"aaaaaaaaaa","password":"aaaaaaaaaaaA","title":"M","email":"aaaaaaaaaa@aaaaaaaaaa"}
我的问题是我想将对象 "data" 转换为我的 class "FormRegisterDto",其中包含 "String login"、"String password" 等属性...
我的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();
}
你知道怎么做吗?谢谢 ;).
你的 Object data
是 String
类型,所以你不能将它转换为 FormRegisterRequestDto
,你应该做的是在前端序列化对象,将其转换为 json 字符串(此时似乎是),而不是像这样使用 Gson google 的库
Gson gson = new Gson();
FormRegisterRequestDto dto=gson.fromJson(data, FormRegisterRequestDto.class);
我正在尝试将图像从我的网络应用程序发送到我的 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 正确接收数据和文件,因为如果我打印 "data",它正在写入:{"login":"aaaaaaaaaa","password":"aaaaaaaaaaaA","title":"M","email":"aaaaaaaaaa@aaaaaaaaaa"}
我的问题是我想将对象 "data" 转换为我的 class "FormRegisterDto",其中包含 "String login"、"String password" 等属性...
我的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();
}
你知道怎么做吗?谢谢 ;).
你的 Object data
是 String
类型,所以你不能将它转换为 FormRegisterRequestDto
,你应该做的是在前端序列化对象,将其转换为 json 字符串(此时似乎是),而不是像这样使用 Gson google 的库
Gson gson = new Gson();
FormRegisterRequestDto dto=gson.fromJson(data, FormRegisterRequestDto.class);