我提交表单时收到400(错误请求)错误。我正在使用Jackson API jackson-core-asl-1.9.10.jar和jackson-mapper-asl-1.9.10.jar。
我可以收到JSON但无法提交。
myscript.js
var app = angular.module('project', ['ngRoute']);
app.controller('projectFormCtrl',["$scope", "$http", function($scope, $http) {
$scope.submitProject = function() {
console.log($scope.project); //Works fine
$http.post('saveProject',$scope.project).success(function () {
console.log($scope.project);
});
};
}]);
WebController.java
@RequestMapping(value="/saveProject", method=RequestMethod.POST)
public @ResponseBody ProjectDetails submitProject(@RequestBody ProjectDetails projectDetails) {
System.out.println(projectDetails);
return projectDetails;
}
答案 0 :(得分:1)
我也遇到了错误请求的相同问题。我通过以下代码解决了这个问题
您可以通过 JSON.stringify(array)将数组转换为json字符串,将数组发布到控制器。
我已经使用 push()将多个对象推送到一个数组中。
var a = [];
for(var i = 1; i<10; i++){
var obj = new Object();
obj.name = $("#firstName_"+i).val();
obj.surname = $("#lastName_"+i).val();
a.push(obj);
}
var myarray = JSON.stringify(a);
$.post("/ems-web/saveCust/savecustomers",{myarray : myarray},function(e) {
}, "json");
控制器:
您可以使用jackson处理json字符串
Jackson是一个高性能的JSON处理器Java库。
@RequestMapping(value = "/savecustomers", method = RequestMethod.POST)
public ServiceResponse<String> saveCustomers(ModelMap model, @RequestParam String myarray) {
try{
ObjectMapper objectMapper = new ObjectMapper().configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
List<DtoToMAP> parsedCustomerList = objectMapper.readValue(myarray, new TypeReference<List<DtoToMAP>>() { });
System.out.println(" parsedCustomerList :: " + parsedCustomerList);
}catch (Exception e) {
System.out.println(e);
}
}
注意:请确保您的dto应包含与使用数组对象发布时相同的变量名称 在我的例子中,我的dto包含firstName,lastName作为发布数组对象。
Jackson Dependancy:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.3</version>
</dependency>
答案 1 :(得分:1)
检查此sample以查看Spring MVC配置以使用json mapper。