SuiteTalk开发:如何获取Custom Segment的列表值
你当前调用getRecords返回的returnedRows中每个元素都是CustomSegment类型的实例,仅包含分段的基础元数据(ID、名称),要获取对应的可选列表值,需要先提取分段关联的自定义列表引用,再查询该自定义列表的完整数据即可,具体实现如下:
List<CustomizationRef> getCustIdResult = client.getCustomizationId(GetCustomizationType.customSegment, true); if (getCustIdResult == null) return new ArrayList(); List<?> returnedRows = client.getRecords(getCustIdResult); List<CustomListValue> allSegmentValues = new ArrayList<>(); for (Object segmentObj : returnedRows) { if (segmentObj instanceof CustomSegment) { CustomSegment customSegment = (CustomSegment) segmentObj; // 获取当前自定义分段关联的自定义列表引用 RecordRef customListRef = customSegment.getCustomList(); if (customListRef == null) { continue; } // 查询自定义列表的完整数据,包含所有可选值 CustomList customList = (CustomList) client.getRecords(Collections.singletonList(customListRef)).get(0); // 提取列表值 if (customList != null && customList.getCustomValueList() != null) { allSegmentValues.addAll(customList.getCustomValueList().getCustomValue()); } } }
- 每个
CustomListValue实例包含valueId、scriptId、name等你需要的列表值字段,可按需提取 - 如果自定义分段设置了不适用自定义列表(比如动态取值的分段),会出现
customListRef为空的情况,需要对应业务逻辑做兼容处理
内容的提问来源于stack exchange,提问作者Mike Sickler
相关产品推荐
相关产品推荐

