Facet开发中data model provider使用的一些心得体会
在进行facet相关开发时,若使用data model provider(如继承于FacetInstallDataModelProvider)来为facet page提供模型数据,需重写以下方法:
1) 重写getPropertyName方法,主要用来添加属性名,通常是在facet page页面中和控件对应的属性名,该控件的值保存于data model中,并与data model保存同步
2) 重写getDefaultProperty方法,用来设置facet page中控件显示的默认初始值
3) 重写isPropertyEnabled方法,用来设置facet page中某个属性对应的某个控件是否可用(enabled or disabled)
4) 重写propertySet方法,当修改facet page中控件的值时,会触发propertySet方法的调用
其中3, 4项不是必需的,要视具体应用而定
若要设置Label控件为不可用状态,Label的初始值也应在getDefaultProperty方法中进行设置,在facet page页面中,也应使用synchHelper.synchLabel(…)方法来使Label显示值与dataModel同步
另外,dataModel的实现类为DataModelImpl,其中有一个Map属性propertyValues,当调用dataModel的getProperty(String propertyName)方法时,其执行顺序如下:
1) 在propertyValues中根据属性名查找属性值,若找到就返回属性值
2) 若propertyValues中没有要查找的属性名,就调用data model provider的getDefaultProperty方法来返回属性值,这也说明了为什么要重写data model provider的getDefaultProperty方法