我有一个动态名称/值对,我作为JSON传递给控制器。
示例:使用以下JQuery生成的动态JSON对象
{"vehicles":[{"odometer_675552753":"73750","odometer_723646452":"68127""price_709725300":"22984","price_709725299":"22999"}]}
var vehicleData = {
vehicles : []
};
var vehicles = {};
$('.firDataField').each(function() {
var id = $(this).attr("name");
var value = $(this).val();
vehicles[id]=value;
});
vehicleData.vehicles.push(vehicles);
$.ajax({
url: 'SaveVehicles.html',
contentType : 'application/json; charset=utf-8',
data:JSON.stringify(vehicleData),
type: "POST",
cache:false,
dataType : 'json',
success: function(data){
hideAjaxLoader();
},
error : function(jqxhr, textStatus, errorThrown) {
$('tbody#tbodyVehicleSearchData').html('');
hideLoading();
showGenericErrorMessage(jqxhr, textStatus, errorThrown, "VehicleSearch");
}
});
Controller:
@RequestMapping("/SaveVehicles.html")
public void
String saveVehicles(
@RequestParam(required = false, value = "vehicles") String jsonVehicleObject,
HttpServletRequest request, Model model)
throws Exception{
LOGGER.entry();
System.out.println("json: " + jsonVehicleObject);
}
jsonVehicleObject始终为null。我尝试过使用带车辆的RequestBody作为对象类型。但没用。有什么建议吗?
答案 0 :(得分:0)
如果您在AJAX中使用type: 'Post'
,则意味着您需要在Controller中添加请求类型。
尝试在控制器中使用它,
[HttpPost]
public void
String saveVehicles(..)
在方法中使用httpPost
来定义响应类型。
答案 1 :(得分:0)
你使用杰克逊。 杰克逊将Java对象转换为JSON或来自JSON
你搜索杰克逊。 :d
示例代码。
(pom.xml中)
<!-- Jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>
(JS)
var list = new Array();
list.push(Your data);
data = JSON.stringify(list);
$.ajax({
url : "your url",
type : 'POST',
data : data,
contentType : 'application/json',
success : function(response) {
},
error : function(request, status, error) {
}
});
(控制器)
@RequestMapping(value = "your path", method = RequestMethod.POST)
public @ResponseBody String test(@RequestBody List<TestModel> models) {
return null; // break point, check model.
}
您创建模型。