我正在 Spring MVC 和 Ext JS 4.1 中设计一个简单的用户通讯录。我在 Java 中定义了我的 User 类以允许引用其他用户:
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")
public class User {
@JsonProperty
private String name;
@JsonProperty
private String email;
@JsonProperty
private List<User> friends = new ArrayList<User>();
}
我使用了@JsonIdentityInfo来确保Jackson 正确处理循环引用以转换为JSON 并在Ext JS 和Spring 之间传递。我像这样发送我的 JSON:
{"data":[
{"@id":1,"name":"John","email":"john@email.com",
"friends":[
{"@id":2,"name":"Peter","email":"peter@email.com","friends":[1]}
]},
2],
"total":2,
"success":true}
这里约翰有@id 1,彼得有@id 2。彼得被定义为约翰的朋友,反之亦然。the 之前的 2"total"
是对 Peter 的引用,因为他已经被定义。我的问题是:现在我已经从 Jackson 获得了递归数据结构,你如何将它们与 Ext JS 集成?我有这个models/User.js
Ext.define('AM.model.User', {
extend : 'Ext.data.Model',
fields : [ '@id', 'name', 'email' ],
idProperty : '@id',
hasMany : [ {
model : 'AM.model.User',
name : 'friends',
associationKey:'friends'
} ]
});
我可以很好地阅读 John,并且可以在 john.friends 中阅读 Peter,但我无法阅读 Peter from,data
因为所有 Ext JS 都是2
(Peter's @id
)。我在ExtJS.grid.Panel中显示它们,只有 John 出现了。彼得的行是空白的。
我需要覆盖我的ExtJS.data.Store中的 Reader 和 Writer吗?