请帮助检查此方法。当我尝试使用邮递员发布数据时,我收到错误http状态400。这种方法有什么错误吗?
@RequestMapping(value = "/Timestamp", method = RequestMethod.POST)
@ResponseBody
public Timestamp newTimestamp(@RequestBody Timestamp timestamp) {
System.out.println("Test: "+ timestamp);
timestampService.saveTimestamp(timestamp);
return timestampDAO.findTimestampByPrimaryKey(timestamp.getId());
}
这是我的时间戳类:
package ehealth.domain;
import java.io.Serializable;
import java.lang.StringBuilder;
import java.util.Calendar;
import java.util.LinkedHashSet;
import java.util.Set;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import org.codehaus.jackson.annotate.JsonIgnore;
import javax.xml.bind.annotation.*;
import javax.persistence.*;
/**
*/
@Entity
@NamedQueries({
@NamedQuery(name = "findAllTimestamps", query = "select myTimestamp from Timestamp myTimestamp"),
@NamedQuery(name = "findTimestampByCreateDate", query = "select myTimestamp from Timestamp myTimestamp where myTimestamp.createDate = ?1"),
@NamedQuery(name = "findTimestampById", query = "select myTimestamp from Timestamp myTimestamp where myTimestamp.id = ?1"),
@NamedQuery(name = "findTimestampByIsActive", query = "select myTimestamp from Timestamp myTimestamp where myTimestamp.isActive = ?1"),
@NamedQuery(name = "findTimestampByLoginDate", query = "select myTimestamp from Timestamp myTimestamp where myTimestamp.loginDate = ?1"),
@NamedQuery(name = "findTimestampByLogoutDate", query = "select myTimestamp from Timestamp myTimestamp where myTimestamp.logoutDate = ?1"),
@NamedQuery(name = "findTimestampByPrimaryKey", query = "select myTimestamp from Timestamp myTimestamp where myTimestamp.id = ?1"),
@NamedQuery(name = "findTimestampByUpdateDate", query = "select myTimestamp from Timestamp myTimestamp where myTimestamp.updateDate = ?1") })
@Table(catalog = "ehealthdb", name = "timestamp")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(namespace = "eHealth_Backend/ehealth/domain", name = "Timestamp")
@XmlRootElement(namespace = "eHealth_Backend/ehealth/domain")
public class Timestamp implements Serializable {
private static final long serialVersionUID = 1L;
/**
*/
@Column(name = "id", nullable = false)
@Basic(fetch = FetchType.EAGER)
@Id
@XmlElement
Integer id;
/**
*/
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "login_date")
@Basic(fetch = FetchType.EAGER)
@XmlElement
Calendar loginDate;
/**
*/
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "logout_date")
@Basic(fetch = FetchType.EAGER)
@XmlElement
Calendar logoutDate;
/**
*/
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "create_date", nullable = false)
@Basic(fetch = FetchType.EAGER)
@XmlElement
Calendar createDate;
/**
*/
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "update_date")
@Basic(fetch = FetchType.EAGER)
@XmlElement
Calendar updateDate;
/**
*/
@Column(name = "isActive")
@Basic(fetch = FetchType.EAGER)
@XmlElement
Boolean isActive;
/**
*/
@OneToMany(mappedBy = "timestamp", cascade = { CascadeType.REMOVE }, fetch = FetchType.LAZY)
@XmlElement(name = "", namespace = "")
java.util.Set<ehealth.domain.User> users;
/**
*/
public void setId(Integer id) {
this.id = id;
}
/**
*/
public Integer getId() {
return this.id;
}
/**
*/
public void setLoginDate(Calendar loginDate) {
this.loginDate = loginDate;
}
/**
*/
public Calendar getLoginDate() {
return this.loginDate;
}
/**
*/
public void setLogoutDate(Calendar logoutDate) {
this.logoutDate = logoutDate;
}
/**
*/
public Calendar getLogoutDate() {
return this.logoutDate;
}
/**
*/
public void setCreateDate(Calendar createDate) {
this.createDate = createDate;
}
/**
*/
public Calendar getCreateDate() {
return this.createDate;
}
/**
*/
public void setUpdateDate(Calendar updateDate) {
this.updateDate = updateDate;
}
/**
*/
public Calendar getUpdateDate() {
return this.updateDate;
}
/**
*/
public void setIsActive(Boolean isActive) {
this.isActive = isActive;
}
/**
*/
public Boolean getIsActive() {
return this.isActive;
}
/**
*/
public void setUsers(Set<User> users) {
this.users = users;
}
/**
*/
@JsonIgnore
public Set<User> getUsers() {
if (users == null) {
users = new java.util.LinkedHashSet<ehealth.domain.User>();
}
return users;
}
/**
*/
public Timestamp() {
}
/**
* Copies the contents of the specified bean into this bean.
*
*/
public void copy(Timestamp that) {
setId(that.getId());
setLoginDate(that.getLoginDate());
setLogoutDate(that.getLogoutDate());
setCreateDate(that.getCreateDate());
setUpdateDate(that.getUpdateDate());
setIsActive(that.getIsActive());
setUsers(new java.util.LinkedHashSet<ehealth.domain.User>(that.getUsers()));
}
/**
* Returns a textual representation of a bean.
*
*/
public String toString() {
StringBuilder buffer = new StringBuilder();
buffer.append("id=[").append(id).append("] ");
buffer.append("loginDate=[").append(loginDate).append("] ");
buffer.append("logoutDate=[").append(logoutDate).append("] ");
buffer.append("createDate=[").append(createDate).append("] ");
buffer.append("updateDate=[").append(updateDate).append("] ");
buffer.append("isActive=[").append(isActive).append("] ");
return buffer.toString();
}
/**
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = (int) (prime * result + ((id == null) ? 0 : id.hashCode()));
return result;
}
/**
*/
public boolean equals(Object obj) {
if (obj == this)
return true;
if (!(obj instanceof Timestamp))
return false;
Timestamp equalCheck = (Timestamp) obj;
if ((id == null && equalCheck.id != null) || (id != null && equalCheck.id == null))
return false;
if (id != null && !id.equals(equalCheck.id))
return false;
return true;
}
}
使用Postman的Json数据
{
"id":4,
"loginDate":"01/30/2016 12:12:12 AM",
"logoutDate":"01/30/2016 12:12:12 AM",
"createDate":"01/30/2016 12:12:12 AM",
"updateDate":"01/30/2016 12:12:12 AM",
"isActive":true
}
答案 0 :(得分:1)
查找我默认的日期格式应该是ISO 8601(看起来你正在使用codehaus进行json解析)。我建议您查找如何定义如何解析日期或在JSON中更改日期格式(如果可能)