【问题标题】:BeanMapping: Replace value in set within mapping expression?BeanMapping:在映射表达式中替换集合中的值?
【发布时间】:2022-08-09 03:04:25
【问题描述】:
我有一个字符串 Set I\'m 映射到一个用于 PDF 表单内容提取的 bean:
@Mapping(target = \"targetFieldName\", expression = \"java(contentMapperService.convertStringToSet(pdfFieldsMap.get(\\\"PDF_field_name\\\")))\")
假设来自 PDF 字段的输入字符串是 \"apple,banana\"
如果我们找到值 \"apple\",我们希望在集合映射到目标之前将其替换为 \"apples\"。
这可以在表达式中完成吗?
标签:
java
spring
mapstruct
【解决方案1】:
您可以使用您的特定逻辑创建一个方法并在表达式中使用它
因为你没有提供映射器,以这个为例。
@Mapper(componentModel = "spring")
public interface MyMapper {
@Mapping(target = "targetFieldName", source = "pdfFieldName", qualifiedByName = "setTargetFieldName")
Target toTarget(Source source);
@Named("setTargetFieldName")
default String setTargetFieldName(String pdfFieldName){
return pdfFieldName.replace("apple", "apples");
}
}