Smart GWT не обновляет идентификатор в сетке списка

Я использую Smart GWT 2.3.0 в любом браузере.

У меня есть простая сетка только с данными. И когда я создаю новый регистр, он не обновляет мой идентификатор.

Я прочитал об этом часто задаваемые вопросы и думаю, что все правильно .

код источника данных:

DataSource ds = null;
    try {
        ds = new DataSource();
        ds.setDataURL("do");
        ds.setController(controller);

        DataSourceTextField nombre = new DataSourceTextField("nombre", 
            "Nombre", 50, true);
        DataSourceTextField codigo = new DataSourceTextField("codigo", 
            "Código", 50, true);
        DataSourceTextField id = new DataSourceTextField("id", 
            "Identificador", 50);
        id.setPrimaryKey(Boolean.TRUE);
        id.setCanEdit(Boolean.FALSE);

        ds.setFields(id, codigo, nombre);

Результат консоли:

    16:43:29.808:KPR3:DEBUG:gridEdit:isc_ListGrid_1:showing

Извините, я забыл сказать, что то же самое происходит во вставке, это журнал вставки:

Вот что отправляет мой сервер JSON в качестве ответа на добавление нового регистра:

13:22:09.162:KPR3:DEBUG:gridEdit:isc_ListGrid_0:change detection: newValues: {codigo: "prueba",
nombre: "prueba"}, oldValues: undef
13:22:09.167:KPR3:DEBUG:gridEdit:isc_ListGrid_0:At field: codigo applying validators: [
{type: "isString",
typeCastValidator: true,
_generated: true,
defaultErrorMessage: "Debe ser una Cadena."},
{type: "required",
defaultErrorMessage: undef,
errorMessage: "Campo es obligatorio"}
] to value:prueba
13:22:09.168:KPR3:INFO:gridEdit:isc_ListGrid_0:validateFieldValue, newValue: "prueba", passed validation: true, resultingValue: null
13:22:09.170:KPR3:DEBUG:gridEdit:isc_ListGrid_0:At field: nombre applying validators: [
{type: "isString",
typeCastValidator: true,
_generated: true,
defaultErrorMessage: "Debe ser una Cadena."},
{type: "required",
defaultErrorMessage: undef,
errorMessage: "Campo es obligatorio"}
] to value:prueba
13:22:09.172:KPR3:INFO:gridEdit:isc_ListGrid_0:validateFieldValue, newValue: "prueba", passed validation: true, resultingValue: null
13:22:09.172:KPR3:INFO:gridEdit:isc_ListGrid_0:Saving newValues '{codigo: "prueba",
nombre: "prueba"}'
13:22:10.612:XRP7:DEBUG:ResultSet:isc_ResultSet_0 (created by: isc_ListGrid_0):dataSource data changed firing
13:22:10.612:XRP7:INFO:ResultSet:isc_XDataSource_1:dsResponse for successful operation of type add did not return updated record[s]. Using submitted request data to update ResultSet cache.
13:22:10.612:XRP7:DEBUG:ResultSet:isc_XDataSource_1:Submitted data to be integrated into the cache:[
{codigo: "prueba",
nombre: "prueba"}
]
13:22:10.613:XRP7:INFO:ResultSet:isc_ResultSet_0 (created by: isc_ListGrid_0):updating cache in place after operationType: add, allMatchingRowsCached true
13:22:10.613:XRP7:INFO:ResultSet:isc_ResultSet_0 (created by: isc_ListGrid_0):Updating cache: operationType 'add' submitted by 'isc_ListGrid_0',1 rows update data:
[
{codigo: "prueba",
nombre: "prueba"}
]
13:22:10.614:XRP7:INFO:ResultSet:isc_ResultSet_0 (created by: isc_ListGrid_0):Local filter applied: 3 of 3 records matched filter:{
}
13:22:10.615:XRP7:INFO:ResultSet:isc_XDataSource_1:dsResponse for successful operation of type add did not return updated record[s]. Using submitted request data to update ResultSet cache.
13:22:10.615:XRP7:DEBUG:ResultSet:isc_XDataSource_1:Submitted data to be integrated into the cache:[
{codigo: "prueba",
nombre: "prueba"}
]
13:22:10.627:RDQ9:DEBUG:ResultSet:isc_ResultSet_0 (created by: isc_ListGrid_0):getRange(0, 2) satisfied from cache

И это мой ответ на обновление реестра:

input: {
    "__requestBody": {
        "dataSource": "isc_XDataSource_1",
        "operationType": "add",
        "data": {
            "nombre": "prueba",
            "codigo": "prueba"
        },
        "componentId": "isc_ListGrid_0",
        "oldValues": null
    },
    "inputfields": [
        {
            "value": "prueba",
            "property": "nombre"
        },
        {
            "value": "prueba",
            "property": "codigo"
        }
    ],
    "__requestFormat": "smartgwt",
    "__httpSession": "org.apache.catalina.session.StandardSessionFacade@1c2b15c",
    "__http_request": "org.apache.catalina.connector.RequestFacade@18d70a6",
    "fields": [
        {
            "name": "id",
            "property": "id"
        },
        {
            "name": "codigo",
            "property": "codigo"
        },
        {
            "name": "nombre",
            "property": "nombre"
        }
    ]
}

Вы не можете изменить первичный ключ с помощью обновления (как и в SQL). Сделайте удаление, затем добавьте.

{
    "id": "1",
    "__requestBody": {
        "dataSource": "isc_XDataSource_2",
        "operationType": "update",
        "data": {
            "nombre": "prueba2",
            "id": "1"
        },
        "componentId": "isc_ListGrid_0",
        "oldValues": {
            "id": "1",
            "codigo": "prueba",
            "nombre": "prueba"
        }
    },
    "inputfields": [
        {
            "value": "prueba2",
            "property": "nombre"
        },
        {
            "value": "1",
            "property": "id"
        }
    ],
    "__requestFormat": "smartgwt",
    "__httpSession": "org.apache.catalina.session.StandardSessionFacade@1c2b15c",
    "__http_request": "org.apache.catalina.connector.RequestFacade@1d40d08",
    "fields": [
        {
            "name": "id",
            "property": "id"
        },
        {
            "name": "codigo",
            "property": "codigo"
        },
        {
            "name": "nombre",
            "property": "nombre"
        }
    ]
}

person user670852    schedule 22.03.2011    source источник
comment
Хорошо, я обновил свой json server-send.   -  person Mia Clarke    schedule 22.03.2011
comment
При добавлении происходит то же самое! Он не показывает значение идентификатора! Спасибо за ответ!   -  person user670852    schedule 22.03.2011


Ответы (2)


Журналы сообщают вам, что именно не так:

person Charles Kendrick    schedule 22.03.2011
comment
встроенный редактор по адресу: 3,2, будет сфокусирован: true 16: 43: 31.385: KPR5: INFO: gridEdit: isc_ListGrid_1: cellEditEnd: завершение редактирования, событие завершения: введите 16: 43: 31.386: KPR5: DEBUG: gridEdit: isc_ListGrid_1: изменить обнаружение: newValues: {codigo: "PRUEBA", nombre: "Prueba"}, oldValues: undef 16: 43: 31.390: KPR5: DEBUG: gridEdit: isc_ListGrid_1: В поле: codigo применение валидаторов: [{type: "isString", typeCastValidator: true, _generated: true, defaultErrorMessage: «Должен быть String.»}, {type: «required», defaultErrorMessage: undef, errorMessage: «Поле обязательно»}] в значение: PRUEBA 16: 43: 31.390: KPR5 : INFO: gridEdit: isc_ListGrid_1: validateFieldValue, newValue: "PRUEBA", проверка пройдена: true, resultValue: null 16: 43: 31.392: KPR5: DEBUG: gridEdit: isc_ListGrid_1: В поле: количество применений валидаторов: [{type: "isString: ", typeCastValidator: true, _generated: true, defaultErrorMessage:" Должен быть строкой. "}, {type:" required ", defaultErrorMessage: undef, errorMessage:" Field is required "}] для значения: Prueba 16: 43: 31.393: KPR5: INFO: gridEdit: isc_ListGrid_1: validateFieldValue, newValue:" Prueba ", прошла проверка: true, resultValue: null 16: 43: 31.393: KPR5: INFO: gridEdit: isc_ListGrid_1: Сохранение newValues ​​'{codigo:" PRUEBA ", номер:" Prueba "}' 16: 43: 31.996: XRP3: DEBUG: ResultSet: isc_ResultSet_1 (созданный: isc_ListGrid_1): данные источника данных изменены запуск 16: 43: 31.997: XRP3: INFO: ResultSet: isc_XDataSource_3: dsResponse для успешной операции типа add не вернул обновленную запись [s]. Использование отправленных данных запроса для обновления кеша ResultSet. 16: 43: 31.997: XRP3: DEBUG: ResultSet: isc_XDataSource_3: Отправленные данные для интеграции в кеш: [{codigo: "PRUEBA", номер: "Prueba"}] 16: 43: 31.997: XRP3: INFO: ResultSet: isc_ResultSet_1 (созданный: isc_ListGrid_1): обновление кеша на месте после operationType: add, allMatchingRowsCached true 16: 43: 31.997: XRP3: INFO: ResultSet: isc_ResultSet_1 (созданный: isc_ListGrid_1): Обновление кеша: add_ListGrid_1 ', 1 строка обновляет данные: [{codigo: "PRUEBA", nombre: "Prueba"}] 16: 43: 31.998: XRP3: INFO: ResultSet: isc_ResultSet_1 (создано: isc_ListGrid_1): применен локальный фильтр: 4 из 4 записей соответствующий фильтр: {} 16:43:31. 999: XRP3: ИНФОРМАЦИЯ: ResultSet: isc_XDataSource_3: dsResponse для успешной операции типа add не вернул обновленную запись [ы]. Использование отправленных данных запроса для обновления кеша ResultSet. 16: 43: 31.999: XRP3: DEBUG: ResultSet: isc_XDataSource_3: Отправленные данные для интеграции в кеш: [{codigo: "PRUEBA", номер: "Prueba"}] 16: 43: 32.004: RDQ5: DEBUG: ResultSet: isc_ResultSet_1 (созданный: isc_ListGrid_1): getRange (0, 3) выполнено из кеша - person user670852; 22.03.2011

16: 43: 31.999: XRP3: INFO: ResultSet: isc_XDataSource_3: dsResponse для успешной операции типа add не вернул обновленные записи. Использование отправленных данных запроса для обновления кеша ResultSet.

Ваш ответ JSON - это в основном случайные данные, SmartGWT не знает, что с ним делать, потому что вы ничего не заявили о его формате или значении. Таким образом, SmartGWT просто использует отправленные данные как данные обновления, и отправленные данные, очевидно, не содержат нового значения идентификатора, созданного вами на сервере.

Начните с краткого руководства, главы «Интеграция данных», и перейдите по всем ссылкам, чтобы получить дополнительную информацию. Вкратце, ваше объявление DataSource сообщает SmartGWT, как обрабатывать ваши ответы. Есть рекомендуемые форматы, которые вы можете просто использовать (RestDataSource), или вы можете объявить свойства, такие как recordXPath, чтобы SmartGWT проанализировал ваш существующий формат.

Было бы хорошо посмотреть, как выглядит ваш ответ от сервера. Не могли бы вы обновить свое сообщение этой информацией? SmartGWT не будет создавать за вас никаких идентификаторов, вам придется предоставить их самостоятельно. Боковое примечание: если ваш ответ отформатирован в формате JSON, вам также необходимо установить для DataFormat источника данных значение JSON.

person Charles Kendrick    schedule 05.04.2011