我正在使用 primefaces 选项列表组件,它工作正常
但问题是我使用的是一个 DTO 列表,之后它是可序列化和可克隆的,DTO 的结构如下图所示
public class SearchFieldMasterDTO implements Serializable, Clonable {
private static final long serialVersionUID = 1L;
private String id;
private String fieldName;
private String status;
private String columnName;
private List<String> fieldValues;
private String fieldCode;
}
pickList 组件如下所示,
public class ActionClass {
private DualListModel<SearchFieldMasterDTO> searchFields;
List<SearchFieldMasterDTO> sourceSearchFields;
List<SearchFieldMasterDTO> targetSearchFields;
public init(){
sourceSearchFields = service.getAllFields();
targetSearchFields = new ArrayList<>();
//here all the SearchFieldMasterDTO objects in the list having all the field values invluding getFieldValues() (list of Sting) value
searchFields = new DualListModel<> (sourceSearchFields,targetSearchFields);
}
public void onTransfer() {
sourceSearchFields = searchFields.getSource();
targetSearchFields = searchFields.getTarget();
// here only the getFieldValues() become null
}
}
在 onTransfer ajax 事件中,我正在获取源和目标列表,并且我正在设置我的字段级别列表以供进一步使用,
问题是在创建 DualListModel 之前, sourceList 和 targetList 的 DTO 填充了所有值,
使用 primefaces pickList 将单个 DTO 从 sourceList 传输到 targetList 后,我使用 dualList.getTarget 方法获取 targetList 并返回带有传输对象的列表,但唯一的一个值变为 null
请帮助我,我认为pickList在内部进行对象克隆,因此它错过了字符串字段列表,我已经覆盖了克隆方法以深度克隆所有值,但它根本没有克隆我在克隆方法中放置断点的对象和我确定它没有调用 clone 方法,那么仅缺少 String fieldValues 属性值的 Lis