Dozer 如何在运行时在推土机组件中提供自定义转换器参数?

Dozer 如何在运行时在推土机组件中提供自定义转换器参数?,dozer,converters,Dozer,Converters,我已经使用推土机现场级映射实现了带有静态自定义转换器参数的自定义转换器。但在我的例子中,自定义转换器参数将随时更改,我需要动态地传递它们 XML现场级推土机映射: <field custom-converter-id="decoder" custom-converter-param='{"no":15,"name":"time","size":4,"covert":"test"}'> <a>data.message</a> &l

我已经使用推土机现场级映射实现了带有静态自定义转换器参数的自定义转换器。但在我的例子中,自定义转换器参数将随时更改,我需要动态地传递它们

XML现场级推土机映射:

<field custom-converter-id="decoder" custom-converter-param='{"no":15,"name":"time","size":4,"covert":"test"}'>
        <a>data.message</a>
        <b>test[0].testField</b>
    </field>

若您使用依赖项注入框架,那个么您可以将参数添加到某个bean中,并通过从自定义转换器进行编程查找来获得该bean

您可以为源类创建包装器,并将param传递给此包装器,前提是源类的类型为source,目标为Destination:

公共类数据包装器{ 字符串参数; 源包装; 公共DataWrapperSource包装,字符串参数{ this.wrapped=wrapped; this.param=param; } 公共字符串getParam{ 返回参数; } 公共源getWrapped{ 返回包装; } } 然后,您应该编写一个映射配置和自定义转换器,用于将DataWrapper类映射到目标类:

数据包装器 目的地 此转换器将处理从源类到目标类的参数和调用映射映射映射配置也应存在:

公共对象转换对象existingDestinationFieldValue、对象sourceFieldValue、类destinationClass、, 类源类{ DataWrapper=DataWrapper sourceFieldValue; 字符串param=wrapper.getParam; ... 返回mapper.mapwrapper.getWrapped,destinationClass; } 映射可按以下方式使用:

DataWrapper=newdatawrappersource,编号:15,名称:time,大小:4,隐蔽:test; mapper.mapwrapper,Test.class;