具有自定义参数的推土机映射

时间:2014-09-05 17:20:01

标签: dozer

我需要将classA字段映射到classB字段以及本地化,即ClassA字段值在映射到classB字段之前需要转换为本地化值。应将Locale作为参数传递给mapper,以获取本地化值。有没有选择将运行时参数传递给mapper以及Source和Target类? 感谢。

1 个答案:

答案 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)

这就是你的情况。你可以像写

一样写smth
customConverter(com.yourproject.TranslatorConverter.class, "en")
动态代码库配置中的

为转换器定义参数。如何编写应用参数的CustumConverter实现 - 看看here