字段首字母大写导致控件赋值失败

编辑页面保存或者提交后,页面会刷新一下,这个时候实际上是打开了一个新的页面,也就是保存或者提交的单据的编辑页面,但是有时候我们发现页面刷新后,之前填写的有些值不见了,这是为什么呢?

编辑页面打开时,会读取单据的值。然后放到model中传到前台,详见com.kingdee.bos.webframework.dynamic.handler.view.WebEditOnLoadHandler

前台通过_self.getCurrentModel()获取值然后经过数据装载事件,将model的值放到控件中去。这个时候如果属性名称首字母大写了,但是后台通过对象转JSON时会把属性的首字母转为小写,导致名称对不上,从而值就无法赋到控件上了。

解决方式:

  1. 最好就是遵从开发规范,将属性值的首字母变成小写。修改元数据重新发布部署。

  2. 如果由于历史原因实在无法修改,可以在数据装载事件之前将_self.getCurrentModel()中的属性名称改回来。
  3. 扩展数据装载事件的before事件

  4. Model里添加一个首字母大写的属性,把首字母小写的属性值带过去。
    _self.getCurrentModel().Name = _self.getCurrentModel().name;
    

相关样例