Java - MapStruct:Mapper的自定义属性,如`nullValueCheckStrategy`

问题描述 投票:0回答:1

我可以在Mapper.java接口nullValueCheckStrategy中添加一个新属性来检查权限吗?

如果我添加了nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS Code Generates将为每个字段添加if(filed != null)

我希望有一个像if(rightService.hasRole("Admin") { ... },以避免更新没有权限的用户的价值。

这是我第一次在这里提出一个问题,我希望得到一些答案,非常感谢。

java mapstruct
1个回答
2
投票

目前不支持此功能。但是,您可以通过编写自定义映射器并为您拥有的不同角色提供不同的方法来实现此目的。您的映射器可能如下所示:

@Mapper
public abstract class MyMapper {

    private MyService service;

    public void update(Target target, Source source) {
        if (service.hasRole("Admin")) {
            updateForAdmin(target, source);
        } else if (service.hasRole("X")) {
            updateForX(target, source);
        }
    }


    //Mappings for Admin, ignore those that he / she has no rights
    protected abstract updateForAdmin(@MappingTarget Target target, Source source);

    //Mappings for X, ignore those that he / she has no rights
    protected abstract updateForX(@MappingTarget Target target, Source source);

    //setter injection
}

基本思想是为每个角色提供一个具有适当映射的方法。映射器有一个公共方法,其余的只是MapStruct实现的方法。

© www.soinside.com 2019 - 2024. All rights reserved.