【发布时间】:2022-12-17 23:22:19
【问题描述】:
我正在尝试自定义一个映射,使用一个字符串来确定一个对象属性,所以我这样写:
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public abstract class ProductMapper {
public abstract ProductInput asProductInputFromIdentifier(String identifier);
@AfterMapping
protected void determineIdentifier(String identifier, @MappingTarget ProductInput out) {
if (StringUtils.contains(identifier, '?')) {
out.setExternalId(identifier);
} else {
out.setInernalId(identifier);
}
}
}
生成的类不调用确定标识符方法。我通过直接使用 Java 表达式找到了另一种解决方案作为 ProductInputFromIdentifier方法,但我真的想使用@AfterMapping.
@Mapping(target = "externalId", expression = "java( org.apache.commons.lang3.StringUtils.contains(identifier, '|') ? identifier : null )")
@Mapping(target = "internalId", expression = "java( !org.apache.commons.lang3.StringUtils.contains(identifier, '|') ? identifier : null )")
public abstract ProductInput asProductDetailInputFromIdentifier(String identifier);
我不明白为什么它不起作用是因为我在方法参数中没有对象吗?
【问题讨论】:
-
您使用的是哪个版本的 MapStruct?
-
你好,<org.mapstruct.version>1.4.1.Final</org.mapstruct.version>
标签: mapstruct