0

JavaのRESTサービスのリソースクラスに次のメソッドがあります。

@POST
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Player createCustomer(Customer customer)
{
    System.out.println("Request for Create");

    System.out.println(""+customer.getID()+"\n"+customer.getTableID()+"\n"+customer.getCustNick());

    //Above statement should print the details I send via JSON object

    //return custdao.create(customer); //Want to call this to add new "customer"  into database table.

    return player;
}

そして、フォームの入力フィールドに入力して作成ボタンがクリックされたときに呼び出すjQueryメソッドに従います。

function createEntry() {
        var formData = JSON.stringify({
            "ID" : $("input[name='txtID']").val(),
            "tableID" : $("input[name='txtTableID']").val(),
            "custNick" : $("input[name='txtNick']").val()
        });

        console.log(formData); //Just to see if form details are JSON encoded.

        $.ajax({
            type: "POST",
            contentType: "application/json",
            url: baseURL,
            dataType: "json",
            data: formData,
            success: function(data) {
                console.log("Customer Added!");
                $("div.response").append("<h3>New Customer ("+ $("input[name='txtNick']").val() +") Added on the Server</h3>");
            }
        });
    }

しかし、サーバー上で、空の「顧客」オブジェクトを取得しています。ここで何が間違っているのでしょうか。さらに詳細が必要な場合はお知らせください(カスタマークラスモデルに関して)。

更新:以下はCustomerクラスです。

/*ignore imports, all required imports are included */

@XmlRootElement
public class Customer
{
    private int id;
    private int tableid;
    private String custnick;

    public int getID()
    {
            return id;
    }

    public void setID(int id)
    {
            this.id = id;
    }

    ....
    ....
    /* Similar Setter-Getter Methods for the fields */
}

問題は「Customer」クラスのXMLスキーマに関係していると思います。また、JSONオブジェクトで送信するノード名がスキーマと一致しないため、モデルクラスのセッターメソッドでフィールドをマッピングできない場合があります。確かに。

4

1 に答える 1

1

この問題は、フィールド名の不一致が原因である可能性があります。

エンティティクラスのJAXBアノテーションを使用し@XmlElementて、フィールドに必要な名前を設定し、すべてを明確にすることができます。次のリンクをたどってください:http://jaxb.java.net/tutorial/section_6_2_7_1-Annotations-for-Fields.html#Annotations%20for%20Fields

于 2012-06-03T11:42:18.140 に答える