2014-02-22 34 views
0

問題:我試圖避免將某些類屬性作爲xml元素包含在GET請求中,但要在POST請求上進行識別。只有當方法消耗xml/json時才需要JAXB元素

我班的簡化版本(僅在必要的東西):

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

我想知道是否有我的p A的解決方法roblem。

回答

1

下面是解決你的問題,兩種方法:

  • 退房的Annox Project。它允許你有替代的DTO/JAXB映射。
  • 只需使用不同的DTO進行POST和GET
+0

是不是純粹的JAXB解決方案? (但仍然避免使用2個DTO,因爲我覺得有點醜陋,爲此僅使用一個DTO ......) – Daniel

+0

據我所知,這裏沒有純粹的JAXB解決方案(除了第2項) –

+0

好的,謝謝你先生。 – Daniel

相關問題