Tôi có enum như:Dozer String để enum mapping
public enum PartnershipIndicator {
VENDOR("VENDOR"), COPARTNER("COPARTNER"), BUYER("BUYER");
String code;
private PartnershipIndicator(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public static PartnershipIndicator valueOfCode(String code) {
for (PartnershipIndicator status : values()) {
if (status.getCode().equals(code)) {
return status;
}
}
throw new IllegalArgumentException(
"Partnership status cannot be resolved for code " + code);
}
@Override
public String toString() {
return code;
}
}
tôi cần phải chuyển nó sang String và ngược lại. Bây giờ, nó được thực hiện bằng công cụ chuyển đổi tùy chỉnh. Nhưng tôi muốn làm điều đó thông qua ánh xạ dozer (nếu có thể). Nếu tôi không viết bất kỳ ánh xạ nào lên conf dozer, tôi sẽ nhận được
org.dozer.MappingException: java.lang.NoSuchMethodException: by.dev.madhead.demo.test_java.model.PartnershipIndicator.<init>()
ngoại lệ. Tôi không thể thêm constructor công khai mặc định vào enum, vì nó là không thể. Vì vậy, tôi đã viết một thủ thuật với mã nội bộ và valueOfCode()/toString(). Nó không hoạt động. Sau đó, tôi đã ánh xạ nó trong cấu hình dozer:
<mapping>
<class-a>java.lang.String</class-a>
<class-b create-method="valueOfCode">by.dev.madhead.demo.test_java.model.PartnershipIndicator</class-b>
</mapping>
Nó không hoạt động. Tôi đã thử valueOfCode(), ánh xạ một chiều. Không có gì hiệu quả. Enum để chuyển đổi chuỗi không hoạt động quá, tôi nhận được chuỗi rỗng. Bất kỳ ý tưởng nào?
Tôi đã thêm công cụ chuyển đổi tùy chỉnh của mình vào máy chủ dozer. Vì vậy, không ai từ 5.4 sẽ không phải đối mặt với vấn đề này :) – madhead
@all Bất cứ ai có thể nhìn vào [Câu hỏi] này (http://stackoverflow.com/questions/27864640/dozer-string-to-date-field-level-mapping-for -a-list) – 09Q71AO534