如果內容的值是資源的參照,PropertyRequest 可能會包含 NestedPropertyName 物件,而非該內容的 PropertyName 物件。NestedPropertyName 物件有一個根內容名稱和一個巢狀 PropertyRequest。根據指定為根的內容的值,這個物件會向此值所參照的資源要求內容。
除了指定內容的名稱之外,NestedPropertyName 也會包含其擁有的 PropertyRequest。這個巢狀 PropertyRequest 會指定原始資源的內容所參照的資源內容(其值會從參照的資源取得)。
PropertyRequest my_prop_request = new PropertyRequest(ControllableResource.CREATOR_DISPLAY_NAME, ControllableResource.CHECKED_IN.nest( Version.VERSION_NAME, Version.CREATION_DATE). ControllableResource.LAST_MODIFIED);
resource = (ControllableResource) resource.doReadProperties(my_prop_request); String versionName = resource.getCheckIn().getVersionName(); // 使用內容 ...
在 NestedPropertyName 中,指定從伺服器擷取內容的 PropertyRequest 可以擴增 MetaPropertyName 元素,以允許用戶端要求內容的特定 Meta 內容,(而非或不只其 VALUE Meta 內容)。
CqRecord r = p.buildProxy(CqRecord.class, "..."); FieldName<CqRecord> OWNER = new FieldName<CqRecord>("Owner"); FieldName<String> NAME = new FieldName<String>("login_name"); PropertyRequest request = new PropertyRequest(OWNER.nest(StpProperty.TYPE, CqFieldValue.REQUIREDNESS, StpProperty.VALUE.nest(NAME))); CqRecord rec = (CqRecord)r.doReadProperties(request); CqFieldValue<CqRecord> v = rec.getFieldInfo(OWNER); String name = v.getValue().getProperty(NAME); PropertyRequest pnl = new PropertyRequest( CqRecord.FIELDS.nest( StpProperty.VALUE.nest( StpProperty.NAME, StpProperty.TYPE, StpProperty.VALUE))); List<CqFieldValue<?>> fields = ((CqRecord)r.doReadProperties(pnl)).getFields(); for(CqFieldValue<?> field: fields) System.out.println("field " + field.getName() ": " + field.getType() " = " + field.getValue());
在 NestedPropertyName 內的巢狀 PropertyRequest 本身可以包含其他 NestedPropertyName 物件。因此,在與伺服器的某個互動中,可能會擷取任意數目的相關資源和其內容。