динамически заполнять комбинированный список в ExtJs - PullRequest
1 голос
/ 14 июня 2011

Я хочу заполнить комбинированный список динамически на основе данных, которые я получил от Url (который является сервлетом)

Ниже мой код ExtJS:

{ 
    xtype:'combo', 
    id: 'shoutoutsTags',
    fieldLabel: 'Tag',
    value: '',
    mode: 'local',
    width: 200,
    store: new Ext.data.JsonStore({
        id:'ms',                                   
        url:'http://localhost:8080/ezdi/extServlet',
        //totalProperty:'totalCount',
        root:'rows',
        fields:[
          {name:'un'},
          {name:'pwd'}
        ], 
        autoLoad:true      
    }),
    displayField: 'un',
    valueField: 'pwd',
    typeAhead:true,
    minChars:1,
    forceSelection: true,
    triggerAction: 'all',
    hideTrigger:true
    //hiddenName: 'mytag'
}

Но я получаю нижеошибка, и мой URL не вызывается:

msg: «Вы используете ServerProxy, но не предоставили ему URL-адрес».

sourceClass: "Ext.data.proxy.Server"

sourceMethod: "buildUrl" uncaught исключения: вы используетеServerProxy, но не предоставили его с URL-адресом.

Подскажите, как можно устранить эту ошибку.

Ответы [ 3 ]

3 голосов
/ 15 июня 2011

Ваш магазин должен быть обновлен для использования новой модели данных Ext JS 4:

var store = Ext.create('Ext.data.Store', {
    model: 'MyNamespace.StoreModel',
    proxy: {
        type: 'ajax',
        url: 'http://localhost:8080/ezdi/extServlet',
        reader: {
            type: 'json',
            root: 'rows',
            totalProperty: 'totalCount'
        }
    }
});

Здесь вы заметите, что в магазине есть свойство 'модель', которое представляет собой строку, и что нет сопоставления полей. Это потому, что вам также нужно создать модель для магазина, на которую можно ссылаться, например:

Ext.define('MyNamespace.StoreModel', {
    extend: 'Ext.data.Model',
    fields: [
        {name:'un'},          
        {name:'pwd'}
    ]
});

Надеюсь, это поможет!

3 голосов
/ 14 июля 2011
 Ext.define("modelname", {
    extend: 'Ext.data.Model',
    proxy: {
        type: 'ajax',
        url : '/myServlet',
        method:'POST',
        reader: {
            type: 'json',
            root: 'rows'
            //,totalProperty: 'totalCount'
        }
    },

    fields: [
        {name: 'name', mapping: 'name'}
    ]
});

   var ds = Ext.create('Ext.data.Store', {
       pageSize: 10,
       model: 'modelName'
   });
1 голос
/ 14 июня 2011

Это неверный URL, вам нужен просто '/ ezdi / extServlet'.

...