2 回答

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個贊
查看文檔,您似乎可以為您擁有的每種類型的屬性創(chuàng)建 CustomConverts;他們在文檔頁面上的示例,這是 IntegerPropertyConverter 的開始。
public class IntegerPropertyConverter extends AbstractCsvConverter {
@Override
public Object convert(String value) {
return new SimpleIntegerProperty(Integer.parseInt(value));
}
@Override
public String convertToWrite(Object value) {
IntegerProprety prop = (IntegerProperty) value;
return String.format("%d", prop.get());
}
}
然后你會使用:
@CsvCustomBindByName(column = "ENTITY_ID", converter = IntegerPropertyConverter.class)
private SimpleIntegerProperty entityId;
如果您需要使用較長的格式創(chuàng)建屬性,則需要覆蓋 AbstractBeanField 中的其他方法,例如public final void setFieldValue(T bean, String value, String header)您可以實(shí)際使用 bean 來創(chuàng)建

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個贊
沒有簡單的方法可以解決這個問題。
您將Phone保留為POJO,并將整個對象映射為屬性
private SimpleObjectProperty<Phone> phone = new SimpleObjectProperty<Phone>();
或者您可以將屬性添加到電話
public class Phone {
@CsvBindByName(column = "ENTITY_ID")
private Integer entityId;
private final SimpleIntegerProperty entityIdProperty;
public Phone() {
entityIdProperty = new SimpleIntegerProperty();
entityIdProperty.addListener((o, oldValue,newValue)->{
entityId = newValue.intValue();
});
}
public Integer getEntityId() {
return entityId;
}
public void setEntityId(Integer entityId) {
this.entityId = entityId;
entityIdProperty.set(entityId);
}
public SimpleIntegerProperty getEntityIdProperty() {
return entityIdProperty;
}
// ...
}
如果您不需要此對象具有雙向綁定,則可以跳過偵聽器。
還有其他可能性,例如使用方法和構(gòu)造函數(shù)從 Phone 轉(zhuǎn)換為 PhoneFX(使用屬性而不是簡單類型),反之亦然。
添加回答
舉報