1

初投稿なのでお手柔らかにお願いします..

私は現在、BackboneJS + JAX-RS で病院の名簿 Web アプリケーションを作成しています。今までは大丈夫だったのですが、一生これを解決することはできません...

私のGroupモデルにはUsersコレクションがあります。

List<User>これはJAX から返されUser@XmlRootElement注釈が付けられます。

しかし、fetch を呼び出すと、コレクションではなくモデルGroupの配列でモデルが埋められます。UserUsers

UserモデルのリストをUsersコレクションとして返すように JAX に指示する方法はありますか?

どんな助けでも大歓迎です!

編集:

バックボーンのグループ モデル:

window.Group = Backbone.Model.extend({
urlRoot: "api/groups",
defaults: {
    name: ''
},

validate: function(attrs){
    var errors = [];

    if (!attrs.name) {
        errors.push({name: 'name', message: 'Please fill in the name field.'});
    }

    if(!attrs.users || attrs.users.length == 0){
        errors.push({name: 'users', message: 'Please add at least 1 user.'});
    }

    return errors.length > 0 ? errors : false;
}
});

Java のグループ モデル:

package org.jakeduncandev.roster;

import java.util.List;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Group {

private int id;

private String name;

private int ownerid;

private List<User> users;

public List<User> getUsers() {
    return users;
}

public void setUsers(List<User> users) {
    this.users = users;
}

public int getId() {
    return id;
}

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

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getOwnerid() {
    return ownerid;
}

public void setOwnerid(int ownerid) {
    this.ownerid = ownerid;
}


}

JSON が返されました:

"groups":[{"name":"mates","id":71,"users":[{"id":6,"password":"<PASSWORD>","email":"<EMAIL>","firstName":"Jake","lastName":"Duncan"},{"id":7,"password":"<PASSWORD>","email":"<EMAIL>","firstName":"alec","lastName":"stearn"}],"ownerid":0}]
4

1 に答える 1

0

解決しました!

モデルにparseメソッドを追加しました。Groupそして、コレクションをインスタンス化するときにオプションを使用しました:{parse: true}そして、parse各モデルのメソッドを呼び出します。

parse メソッドのオーバーライドを提案してくれた user10 に感謝します。

parse: function(response){

    response.users = new window.Users(response.users);

    return response;
}
于 2013-10-20T14:05:35.573 に答える