基本自定义 > 用户界面自定义 > 收集 UI 数据 > NmObject 实用程序 > 配置不同的目标对象
  
配置不同的目标对象
以下过程将介绍如何为属性面板或除基准对象以外的其他行指定目标对象。将从目标对象中获取行选择和操作的唯一标识符,同时,目标对象会传递到数据实用程序,以创建为属性显示的值。目标对象必须通过 getter 方法从基准对象中获取。对于表格和树,可以为整个表格或树或仅为某些列指定目标对象。对于面板,可以为整个面板或仅为某些属性指定目标对象。
目标对象必须可通过基准对象上的 "getter" 方法来检索。
为具有行选择和/或行操作菜单的表格或树配置不同目标对象时,目标对象应为下列类型之一,以便能够确定唯一的行标识符:
可持续的
WTReference
ObjectIdentifeir
NmObject
NmOid
NmSimpleOid
使用以下方法之一设置目标对象:
JCATableConfig.setTargetObject(),用于设置整个表格或树的目标对象
JCAColumnConfig.setTargetObject(),用于设置特定表格或树列的目标对象
AttributePanelConfig.setTargetObject(),用于设置整个属性面板的目标对象
AttributeConfig.setTargetObject(),用于设置面板中单个属性的目标对象
如果为整个面板或表格设置目标对象,除非被 AttributeConfigJCAColumnConfig 覆盖,否则该目标对象将用于每个属性/列。如果为整个面板或表格指定了目标对象,并且希望将该基准对象用于特定的属性或列,则可以在属性或列配置中将目标对象设置为 ""。
例如:
JcaTableConfig table = (JcaTableConfig)factory.newTableConfig();
table.setTargetObject(“foo”);
ColumnConfig c = factory.newColumnConfig("name",label,false);
ColumnConfig col = factory.newColumnConfig("thing1",label,false);
col.setTargetObject("");
ColumnConfig col2 = factory.newColumnConfig("thing2",label,false);
col2.setTargetObject("bar");
在上述示例中,对于每一列,DefaultNmObjectDataUtility 将尝试从 targetObject 创建 NmObject。对于名称列,将通过在行基准上调用 getFoo() 来检索 targetObject,因为 "foo" 是为表格配置的目标对象,且未针对名称列进行覆盖。对于 thing1targetObject 是行基准,因为已配置 ""。对于 thing2,将通过调用行基准上的 getBar() 检索 targetObject
这与配置 bean 特性的方式有何不同?
您可能想知道 targetObject 的此配置与使用 bean 样式特性配置的配置有何不同。例如,以下配置最终都会显示为表格返回的行对象的 getFoo().getBaz()
ColumnConfig colA = factory.newColumnConfig("thing1",label,false);
colA.setTargetObject("foo");
colA.setNeed("baz");
ColumnConfig colB = factory.newColumnConfig("thing2",label,false);
colB.setTargetObject("");
colB.setNeed("foo.baz");
其中细微差别在于,colA 将使用 'foo' 作为发送到行的 DefaultNmObjectUtilityDataUtility 等的目标对象。colB 会使用原始行对象。