gpt4 book ai didi

java - 仅当方法使用 xml/json 时才需要 JAXB 元素

转载 作者:行者123 更新时间:2023-12-01 13:22:14 26 4
gpt4 key购买 nike

问题:我试图避免某些类属性作为 xml 元素包含在 GET 请求中,但在 POST 请求上被识别。

我的类(class)的简化版本(只有必要的东西):

@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
}

我想知道是否有解决我的问题的方法。

最佳答案

以下是解决您的问题的两种方法:

  • 查看Annox Project 。它允许您拥有替代的 DTO/JAXB 映射。
  • 只需对 POST 和 GET 使用不同的 DTO

关于java - 仅当方法使用 xml/json 时才需要 JAXB 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21959667/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com