1

アンマーシャリングプロセスにjaxbを使用しています

これは私のリクエストです

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

}

これは、Jersey(Restful Framework)がデータを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が呼び出されないのかということです

「アカウントの新しいセッターメソッドが呼び出されました」という行が印刷されないのはなぜですか。また、getMethod内の行が呼び出されているのに対して(アカウントの新しいゲッターメソッドが呼び出されます)

基本的に、リクエストXMLで送信される属性にデータを操作したいと思います。

データの設定方法を制御できるコールバックメソッドはありますか?

前もって感謝します 。

4

1 に答える 1

2

この場合、SetterメソッドsetAcctが呼び出されないのはなぜですか?

アクセスタイプをフィールドに設定したため:@XmlAccessorType(XmlAccessType.FIELD)。に変更します@XmlAccessorType(XmlAccessType.PROPERTY)

XmlAccessTypejavadoc

データの設定方法を制御できるコールバックメソッドはありますか?

はい。アダプタを使用すると、マーシャル/アンマーシャルプロセスを完全に制御できます。

于 2012-08-07T13:44:33.230 に答える