【发布时间】:2014-02-22 19:54:10
【问题描述】:
问题:我试图避免将某些类属性包含在 GET 请求中作为 xml 元素,但要在 POST 请求中识别。
我的课的简化版(只有必要的东西):
@XmlRootElement(name = "user")
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
public class User implements Serializable{
private String username;
private String password;
...
@XmlTransient //prevent password to be inserted in XML/JSON on GET requests.
public String getPassword() {
return password;
}
}
我使用@XmlTransient 来防止密码(尽管事件被保存为哈希)在GET 请求中退出。
所以对于一个请求(比方说)localhost:8080/app/user/John 它只会被返回(为了简单起见)
<user>
<username>John</username>
</user>
但是当我尝试发送一些 XML/JSON 时(比如说:):
<user>
<username>John</username>
<password>Doe</password>
</user>
由于@XmlTransient 注释,密码获取被忽略:
@POST
@Consumes(value = {"application/xml", "application/json"})
public void insertUser(User user){
em.persist(user); //ERROR because User#password is NULL
}
我想知道我的问题是否有解决方法。
【问题讨论】:
标签: java xml rest jakarta-ee jaxb