我可以在Mapper.java
接口nullValueCheckStrategy
中添加新属性以检查权限吗?
如果我添加nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS
代码生成将为每个字段添加if(filed != null)
。
我希望有一个if if(rightService.hasRole("Admin") { ... }
,以避免为没有权限的用户更新值。
这是我第一次在这里提出问题,我希望得到一些答案,非常感谢。
答案 0 :(得分: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实现的方法。