私は問題なく動作しているprimefacesピックリストコンポーネントを使用しています
しかし、問題は、DTO のリストを使用していることです。その後、Serializable と Clonable の両方が可能です。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 を使用して sourceList から targetList に単一の DTO を転送した後、dualList.getTarget メソッドを使用して targetList を取得し、転送されたオブジェクトでリストを返していますが、値が 1 つだけ null になっています
助けてください、、、 pickList が内部的にオブジェクトのクローン作成を行っていると思ったので、文字列フィールドのリストが失われ、クローン メソッドをオーバーライドしてすべての値をディープ クローンしましたが、クローン メソッドにブレークポイントを置いたオブジェクトのクローンはまったく作成されませんでした。私はそれがクローンメソッドを呼び出していないことを確信しています.String fieldValuesプロパティ値のLiだけが欠落しています