2017-12-27 4 views
0

Mapper.javaの新しいプロパティをnullValueCheckStrategyのように追加してアクセス許可を確認できますか?Java - MapStruct: `nullValueCheckStrategy`のようなMapperのカスタムプロパティ

を追加した場合nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS コード生成はすべてのフィールドにif(filed != null)を追加します。

また、許可がないユーザーの値を更新しないようにするには、if(rightService.hasRole("Admin") { ... }のようにする必要があります。

私はここで質問をするのは初めてですが、私はいくつかの回答を得ることを願っています、ありがとう。

答えて

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が実装するためのものです。

+0

ありがとう、私はそれを試してみます。 –

+0

あなたがうまくいけば答えを受け入れることができます。それ以外の場合は教えてください私はそれを更新することができます – Filip

+0

あなたのソリューションは彼が権利を持っていないフィールドを無視しているので私はそれは私にとっては違うと思うので、私はそれを別の要求を送信する必要があります。しかし、私はすべての情報を持っている同じ要求で仕事をしたいし、バックエンドは彼が権利を持っていないかどうかをテストし、彼の価値を使うことはできません。 –

関連する問題