Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java mapstruct:将字段名称映射到属性_Java_Mapstruct - Fatal编程技术网

Java mapstruct:将字段名称映射到属性

Java mapstruct:将字段名称映射到属性,java,mapstruct,Java,Mapstruct,源类: class ReportSettings { private HeaderSettings headerSettings; private FooterSettings footerSettings; // getters and setters omitted } class HeaderSettings { private boolean showLogo; // getters and setters omitted } class

源类:

class ReportSettings {
    private HeaderSettings headerSettings;
    private FooterSettings footerSettings;

    // getters and setters omitted
}

class HeaderSettings {
    private boolean showLogo;

    // getters and setters omitted
}

class FooterSettings {
    private boolean showPageNumber;

    // getters and setters omitted
}
目标类别:

class Parameters {
    private String group;
    private String name;
    private String value;

    // getters and setters omitted
}
是否可以使用MapStruct将
ReportSettings
对象转换为
List
对象,如下所示,
ReportSettings
类中的字段名映射到
参数
类的
字段:

group           | name           | value
----------------------------------------
headerSettings  | showLogo       | false
footerSettings  | showPageNumber | true

据我所知,目前还没有基于字段名动态创建列表的功能

我唯一想到的是一个真正静态的解决方案,但我想你有一个动态的字段列表,不能这样做

@Mapper
公共抽象类ReportSettingsMapper{
@映射({
@映射(target=“group”,constant=“headerSettings”),
@映射(target=“name”,constant=“showLogo”),
@映射(target=“value”,source=“headerSettings.showLogo”)
})
受保护的抽象参数mapHeaderSettings(ReportSettings设置);
@映射({
@映射(target=“group”,constant=“footerSettings”),
@映射(target=“name”,constant=“showPageNumber”),
@映射(target=“value”,source=“footerSettings.showPageNumber”)
})
受保护的抽象参数mapFooterSettings(ReportSettings设置);
公共列表mapReportSettings(报告设置){
列表参数=新的ArrayList();
添加(mapHeaderSettings(设置));
添加(mapFooterSettings(设置));
返回参数;
}
}
(未测试的代码;如果使用Java>=8,则可以使用带有默认方法的接口+删除
@Mappings
容器注释)