EXT JS 5:如何将java表单表示为ext js模型?

时间:2014-08-06 14:56:39

标签: java javascript rest spring-mvc extjs

我是Ext JS的初学者,我想将我的Java表单发送到具有已定义模型的ext js商店: 这是我的Java表单:

public class Form {
    private member1;
    private member2;
    private List<AnotherType> membersList;

    //getters and setters
}

这是我的商店:

Ext.define('MyApp.store.Mystore', {

    extend   : 'Ext.data.Store',

    model : 'MyApp.model.MyModel',

    proxy : {
        type: 'rest',

        url : '/myapp/url/for/findForm',

        reader: {
            type: 'json'
            rootProperty : 'form'
        },

        writer: {
            type: 'json'
        }
    }
}

如何为包含成员列表定义MyModel?

加载商店后如何使用此列表? (这是加载combox的列表)

谢谢!

1 个答案:

答案 0 :(得分:2)

你的模特看起来像这样。我使用了与您在问题中使用的命名模式类似的命名模式。

Ext.define("MyApp.model.Form", {
    extend: "Ext.data.Model",
    fields: [
        {name: "member1", type: "string"},
        {name: "member2", type: "string"},
    ],
    hasMany: {
        model: "MyApp.model.AnotherType",
        name: "membersList",
        associationKey: "membersList"
    }
});

Ext.define("MyApp.model.AnotherType", {
    extend: "Ext.data.Model",
    fields: [
        {name: "value", type: "string"},
        {name: "label", type: "string"},
    ]
});

你可以像这样创建一个组合框。

Ext.create("Ext.form.ComboBox", {
    fieldLabel: "Members",
    store: Ext.getStore("MyApp.store.Mystore").getAt(0).membersList(),
    queryMode: "local",
    displayField: "label",
    valueField: "value",
    renderTo: Ext.getBody()
});

请注意,以上只是使用商店中第一个MyApp.model.Form的示例。您可能希望以更通用的方式创建组合框,但我不确定您的具体情况。