在我的浏览器调试中,我可以看到我的v对象中有一个日期参数(Wed Mar 25 2015 03:00:00 GMT + 0300(土耳其标准时间)),全文字符串格式。
function saveVehicle(v) {
return $http.post('/shipment/vehicle/save', v).then(function(response) {
return response.data;
})
问题出在我的requestmapping debug中,date参数带有null。服务器端编码是这样的:
@RequestMapping(value="/vehicle/save", method = RequestMethod.POST)
public Vehicle saveVehicle(@RequestBody Vehicle v){
return vehicleRepository.save(v);
}
我的车型是这样的:
@Entity
@Table(name = "VEHICLE", schema = "VV")
public class Vehicle {
@Column(name = "LOADING_DT")
@JsonSerialize(using = TfJsonDateSerializer.class)
@JsonDeserialize(using = TfJsonDateDeSerializer.class)
private Date loadingDate;
答案 0 :(得分:1)
您需要映射您的对象' v'从浏览器发送到Java对象' Vehicle'。
通常使用json映射器或从Map到您的Vehicle pojo的自定义映射。
答案 1 :(得分:0)
还尝试POST
一个格式正确的对象,可以通过参数名称重新排列你的pojo。
v = {
"loading_date": new Date()
}
$http.post(..., v);
此外,我发现你正在使用自定义(反)序列化程序,所以请根据JS如何序列化日期值,发布他们的代码或确保它们正确执行
最好NAS
答案 2 :(得分:0)
请求正文中的属性可能与java loading_date
属性的名称不同。
假设您的请求正文有一个名为import com.fasterxml.jackson.annotation.JsonProperty;
@JsonProperty("loading_date")
private Date loadingDate;
的属性,您必须将该名称映射到java属性,如下所示:
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
@JsonProperty("loading_date")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "UTC")
private Date loadingDate;
此外,为日期定义字符串转换可能是个好主意:
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
@JsonProperty("loading_date")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "UTC")
private Date loadingDate;
public Date getLoadingDate() {
return loadingDate;
}
public void setLoadingDate(Date loadingDate) {
this.loadingDate = loadingDate;
}
并添加getter和setter以防您忘记:
{{1}}