1
當對象我有一個類如下JAXB元件的預防結合:創建
@XmlRootElement(name="User")
@XmlAccessorType(XmlAccessType.NONE)
public class User {
private int id;
private String name;
public User() { }
@XmlAttribute
public int getID() {
return id;
}
public void setID() {
this.id = id;
}
@XmlElement
public String getName() {
return first + " " + last;
}
public void setName(String name) {
this.name = name;
}
// other class code
}
我使用這個類爲JAX-RS的服務。當客戶希望創建新用戶時,必須發送以下格式的XML表示。
<User>
<name>John Doe</name>
</User>
在收到這樣的片段後,我的服務正確創建了一個新用戶。但是,如果客戶端包含用戶的ID屬性(例如<User id="100">...</User>
),則該屬性的id值將分配給用戶。
正如你所想象的,我希望使用ID字段作爲User類的主鍵,並且不希望用戶能夠指定它。但是,當我返回User實例的表示形式(也是XML)時,我希望能夠將該ID指定爲屬性。
我該如何做到這一點?
感謝您的回覆。我決定去創建一個新的對象實例。但是,我決定使用相同的類並創建一個類似於C++中的拷貝構造函數的克隆方法。 – 2011-04-28 22:30:00
@Mandar如果你的克隆方法看起來乏味和重複,你可能想嘗試使用這個:http://commons.apache.org/beanutils/api/org/apache/commons/beanutils/BeanUtils.html#copyProperties%28java。 lang.Object,%20java.lang.Object 29% – MatrixFrog 2011-06-16 00:18:43