我需要将classA字段映射到classB字段以及本地化,即ClassA字段值在映射到classB字段之前需要转换为本地化值。应将Locale作为参数传递给mapper,以获取本地化值。有没有选择将运行时参数传递给mapper以及Source和Target类? 感谢。
答案 0 :(得分:3)
是的,你可以这样做。让我们从Dozer 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)
这就是你的情况。你可以像写
一样写smthcustomConverter(com.yourproject.TranslatorConverter.class, "en")
动态代码库配置中的为转换器定义参数。如何编写应用参数的CustumConverter实现 - 看看here