从free jqGrid 4.15升级到Gurrido 5.5.5出现decimalSeparator读取报错
问题定位步骤
- 对比正常页面和异常页面的静态资源加载顺序:Guriddo jqGrid 5.x要求资源加载必须遵循「jQuery → jqGrid主js → 对应语言的i18n本地化文件」的顺序,异常页面大概率是遗漏了本地化文件引入,或者加载顺序不符合要求。
- 检查异常页面的jqGrid配置:free jqGrid 4.15内置了默认的英文本地化兜底配置,就算未加载本地化文件也不会触发报错,但Guriddo 5.x没有内置兜底配置,必须显式初始化本地化参数,正常页面就是因为已经完成了本地化配置才可以正常运行。
- 打开浏览器开发者工具的Sources面板,格式化
jquery.jqGrid.min.js后定位到472行,确认该行代码读取的decimalSeparator是否属于$.jgrid.regional下的配置,验证该全局对象是否未完成初始化。 - 核对JSP公共头文件的资源引入规则,确认异常页面是否遗漏了引入包含jqGrid资源配置的公共头,或是单独引入了jqGrid主js但未同步引入本地化文件。
问题解决方法
- 方案1:统一资源加载顺序,在所有用到jqGrid的JSP公共头部固定引入顺序:
<!-- 优先加载jQuery --> <script src="/EVC/resources/js/jquery.min.js"></script> <!-- 再加载jqGrid主js文件 --> <script src="/EVC/resources/js/jquery.jqGrid.min.js"></script> <!-- 最后加载对应语言的本地化文件,例如中文对应grid.locale-cn.js --> <script src="/EVC/resources/js/i18n/grid.locale-cn.js"></script>
- 方案2:新增全局兜底配置,避免部分页面漏引文件报错,在jqGrid主js引入后添加如下全局配置:
// 初始化本地化配置兜底 $.jgrid.regional = $.jgrid.regional || {}; $.jgrid.regional['cn'] = $.jgrid.regional['cn'] || { decimalSeparator: '.', thousandsSeparator: ',', // 可按需补充其他本地化参数 }; // 指定全局默认使用的本地化语言 $.jgrid.defaults.regional = 'cn';
- 方案3:若仅单页面使用特殊数值格式,也可以在对应表格的配置项中显式指定参数,跳过全局配置读取:
$("#yourGridId").jqGrid({ // 其余表格配置保持不变 decimalSeparator: '.', // 其余表格配置保持不变 });
- 额外注意Guriddo 5.x和free jqGrid 4.x存在多处配置项差异,升级过程中需要逐一核对原有自定义配置,避免触发其他属性未定义类报错。
内容的提问来源于stack exchange,提问作者guru mani
相关产品推荐
相关产品推荐

