2012-08-07 50 views
1

我使用JAXB進行解組過程JAXB:如何在反編組過程manipuulate數據

這是我的請求

<kiran acct = "1234567" /> 

package com; 
@XmlRootElement(name = "kiran") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class CustAcct { 

    @XmlAttribute 
    private String acct; 

    public CustAcct() { 

     super(); 
    } 

    public String getAcct() { 
     System.out.println("The New Getter Method of Account is called"); 
     return acct; 
    } 

    public void setAcct(String s) { 
     System.out.println("The New Setter Method of Account is called"); 
     acct = s; 
    } 

} 

這是澤西路(寧靜框架)自動將數據與JAXB綁定

public class HelloService { 

    @POST 
    @Produces("application/text") 
    public String sayPlainTextHello(CustAcct custdata) { 

     System.out.println("The New Account is " + custdata.getAcct()); 
     return "Hi"; 
    } 

} 

在這裏,我的問題是,爲什麼Setter方法setAcct沒有被調用在這種情況下

我的意思是不是正在打印行「賬戶的新setter方法被稱爲」原因,並在爲實現getMethod裏面的線被稱爲歌廳(帳戶的新getter方法被調用)

基本上我想將數據處理爲在請求XML中發送的屬性。

是否有任何回調方法,我可以控制數據的設置方式?

在此先感謝。

回答

2

爲什麼在這種情況下Setter方法setAcct沒有被調用?

因爲您將訪問類型設置爲字段:@XmlAccessorType(XmlAccessType.FIELD)。將其更改爲@XmlAccessorType(XmlAccessType.PROPERTY)

XmlAccessType javadoc。

是否有任何回調方法,我可以通過它來控制數據被設置的方式?

是的。當您使用adapters時,您可以完全控制馬歇爾/解組過程。