Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Combobox 存在空值的EXTJS存储问题——useNull:donds';我没有感情,帮帮忙?_Combobox_Extjs_Jsonstore - Fatal编程技术网

Combobox 存在空值的EXTJS存储问题——useNull:donds';我没有感情,帮帮忙?

Combobox 存在空值的EXTJS存储问题——useNull:donds';我没有感情,帮帮忙?,combobox,extjs,jsonstore,Combobox,Extjs,Jsonstore,各位 我有一个由JSONStore支持的combobox组件。加载到存储区的数据返回组合框值为null。该值是一个int。JSON解码过程将null值转换为零;导致组合框在尝试查找其备份存储中不存在的pk、零时无法呈现 我找到了data.Field对象的useNull:config选项,升级到3.3.0 Final,并将组合框的int值设置为useNull:true。不幸的是,这根本没有任何影响。解码值仍在从null更改为零 当JSON字段的数据为空时,如何不将字段设置为零 这是一张正在发生的事

各位

我有一个由JSONStore支持的combobox组件。加载到存储区的数据返回组合框值为null。该值是一个int。JSON解码过程将null值转换为零;导致组合框在尝试查找其备份存储中不存在的pk、零时无法呈现

我找到了data.Field对象的useNull:config选项,升级到3.3.0 Final,并将组合框的int值设置为useNull:true。不幸的是,这根本没有任何影响。解码值仍在从null更改为零

当JSON字段的数据为空时,如何不将字段设置为零

这是一张正在发生的事情的照片。注意data:value为零,但JSON值为null

谢谢

(嘎!我的声誉<10,所以我不能直接发布图片。在这里查看:)

另外,这是我的商店的字段配置:

  fields: [
        {name:"id", type:"int"},
        {name:"occurenceDate", dateFormat: 'Y-m-d\\TH:i:s', type:"date"},
        {name:"docketNumber", type:"string"},
        {name:"courtLocationId", type:"int", useNull:true},
        {name:"assignedOfficerId", type:"int", useNull:true},
        {name:"primaryIncidentTypeId", type:"int", useNull:true},
        {name:"secondaryIncidentTypeId", type:"int", useNull:true},
        {name:"tertiaryIncidentTypeId", type:"int", useNull:true},
        {name:"incidentLocation", type:"string"},
        {name:"summary", type:"string"},
        {name:"personalItemsSeized", type:"string"},
        "supplements",
        "parties",
        "judgeIds"
    ]

尝试在没有类型声明的情况下使用它。您也可以使用转换方法:

{
    name: "primaryIncidentTypeId", 
    convert: function(value, row) {
        return (value == null) ? null : parseInt(value);
    }
}

关于组合宽度:我通常使用

defaults: {
    anchor: '100%'
}
在表单声明中,并且宽度没有问题

难道不能从服务器端提供转换函数和所有其他元数据吗


我仍然在使用ExtJS 3.2-在生产系统中不需要任何新的bug:)

这也让我明白了,您还可以覆盖Ext.data.Types中的type convert函数,以允许整数类型字段为空值

Ext.data.Types.INT.convert = function(v){
  v = parseInt(String(v).replace(Ext.data.Types.stripRe, ''), 10);
  return isNaN(v) ? null : v;
};

您必须使用
defaultValue:null,使用null:true
,因为整数类型的默认值为零

例如:

{name:"primaryIncidentTypeId", type:"int", useNull:true , defaultValue: null },

现在我不确定combobox的呈现问题是否是因为来自服务器的不可映射值。我将JSONObjectMapper配置为不向客户端返回空字段,如下所示(使用Jackson w/Spring):setSerializationConfig().setSerializationInclusion(JsonSerialize.Inclusion.NON_null);现在null字段没有返回,但是组合框仍然无法正确呈现。还在研究…谢谢你的提示。我成功地添加了上述内容(唯一的区别是:Ext.isEmpty(value)——该值是一个空字符串,并且!=null)。这解决了JSON将空值转换为零的问题,但没有解决组合框缩小的问题。我发现必须显式设置组合框的width:config,否则组合框将收缩。第一个是我在存储的fields:param中定义的convert:function从未被调用。原因是我在填充存储的get中从服务器返回了列元数据;覆盖我在客户端javascript配置中硬编码的内容。第二个问题是Extjs 3.3.0。最后的版本有一个我认为是错误的地方,那就是要求BasicForm对字段为空的表单更新Record()。问题出在BasicForm的updateRecord()内部:它通过调用getValue()的字段进行迭代,然后调用value.groups之类的函数。如果该值为null,则它不是对象和…KABOOM。关于这个有什么想法吗?我想升级到3.3,这样我可以使用useNull:属性而不是转换器。是的,您可以从服务器端在元数据中提供转换函数,很抱歉没有指出这一点。我们使用一些服务器端代码基于任何JavaBean生成extjs存储元数据。我们的流程还不够复杂,无法在生成的代码中包含转换器。感谢您提供的提示re
anchor:“100%”
我已经使用过它,但我的表单太宽,无法吸引人。我必须想出一些办法,比如在表单中添加列来管理大小。在我放松自己之前,我会坚持宽度:。:-)