ExtJS REST 配置为 ID 提供模型名称

ExtJS REST configuration gives Model name to ID

我正在使用 ExtJS 5.1.1,在 POST 到 Java 服务器的过程中出现错误。数据库内部有几个字段,ID 是关键字段,由服务器自动生成。我只需要显示 3 个字段 create/update/delete; 名字、姓氏、电子邮件。我无法将 POST 的 ExtJS 配置为不触摸 ID,只能通过表单面板传递这三个字段。

这是一个示例记录的请求负载。正如您会注意到的那样,它将模型名称赋予 ID:

{"firstName":"New","lastName":"Record","email":"new@record.com","id":"Employee.model.EmployeeMdl-2"}

因此 Java-Spring 服务器响应此消息:

"Could not read document: Can not deserialize value of type int from String "Employee.model.EmployeeMdl-1": not a valid Integer value↵ at [Source: java.io.PushbackInputStream@ae6769; line: 1, column: 74]

PUT 过程非常有效!你能给 POST 一些想法吗?

这是模型片段:

Ext.define('Employee.model.EmployeeMdl', {
        extend: 'Ext.data.Model',
    fields: [
        {name: 'firstName', type: 'string'},
        {name: 'lastName', type: 'string'},
        {name: 'email', type: 'string'}
    ],
    idProperty: 'id',
    proxy: {
        type: 'ajax',
        headers: {
            'Content-Type': 'application/json'      
        },
        api: {
            read: 'http://ip:port/orest/employee',
            create: 'http://ip:port/orest/employee',
            update: 'http://ip:port/orest/employee'
        },
        reader: {
            type: 'json'
        },
        writer: {
            type: 'json',
            allowSingle: true,
            encode: false,
            writeAllFields: true
        }
    }
});

您可以为模型提供生成 ID 的特定方式。

如果需要整数,我可以推荐的是模型中的 Ext.data.identifier.Negative. You would put the full class name into the requires section of the model and then just add the config identifier: 'negative'

当然,这意味着您必须告诉后端负 ID 表示新条目。