2
我需要將classA字段映射到classB字段以及本地化,即ClassA字段值在映射到classB字段之前需要轉換爲本地化值。區域設置應作爲參數傳遞給映射器以獲取本地化值。是否有任何選項將運行時參數與Source和Target類一起傳遞給映射器? 謝謝。帶自定義參數的推土機映射
我需要將classA字段映射到classB字段以及本地化,即ClassA字段值在映射到classB字段之前需要轉換爲本地化值。區域設置應作爲參數傳遞給映射器以獲取本地化值。是否有任何選項將運行時參數與Source和Target類一起傳遞給映射器? 謝謝。帶自定義參數的推土機映射
是的,你可以做到這一點。讓我們從推土機docs
BeanMappingBuilder builder = new BeanMappingBuilder() {
protected void configure() {
mapping(Bean.class, Bean.class,
TypeMappingOptions.oneWay(),
mapId("A"),
mapNull(true)
)
.exclude("excluded")
.fields("src", "dest",
copyByReference(),
collectionStrategy(true,
RelationshipType.NON_CUMULATIVE),
hintA(String.class),
hintB(Integer.class),
FieldsMappingOptions.oneWay(),
useMapId("A"),
customConverterId("id")
)
.fields("src", "dest",
customConverter("org.dozer.CustomConverter")
);
}
};
這個例子在這裏我們可以找到動態配置定義的例子。看看這部分
customConverter("org.dozer.CustomConverter")
在這裏,您可以使用此方法
FieldsMappingOption customConverter(final String type)
自定義一個轉換器,但它還有另一個版本
customConverter(final Class<? extends CustomConverter> type, final String parameter)
這就是你的情況。您可以在動態代碼庫的配置寫水木清華像
customConverter(com.yourproject.TranslatorConverter.class, "en")
爲您轉換器定義的參數。如何編寫應用參數的CustumConverter的實現 - 看一看here