2017-02-10 5 views
0

Wie kann man aus zwei verschiedenen Feldern mappen? Ich muss b.url auf a.x.y.z.url setzen, wenn es sonst existiert a.k.l.m.url:mapstruct: Zuordnung von zwei verschiedenen Feldern

b.url = existiert (a.x.y.z.url)? a.x.y.z.url: existiert (a.k.l.m.url)? aklmurl: default

Expression könnte helfen, aber es wird ziemlich langer Ausdruck, wenn ich alle verschachtelten Felder für null überprüfen, wie „a = null & & a.getX() = null & & a.getX()! .getY()! = null & & a.getX(). getY(). getZ()! = null & & a.getX(). getY(). getZ(). getURL()! = null? a. . getX() getY() Getz() getURL():.. ...“

Danke, Pavel

Antwort

0

können Sie MapStruct verwenden @AfterMapping, um Zugriff auf das Mapping-Objekt zu erhalten.

@AfterMapping 
protected void mapUrl(B b, @MappingTarget A a) { 
    //You will do your logic here 
} 

Theoretisch könnte man es über einen Ausdruck tun, indem Sie Mapper als abstrakte Klasse deklarieren und definieren eine getUrl(A a) Methode. Sie könnten in Ihrem Ausdruck getUrl(a) anrufen.

Ich würde vorschlagen, die @AfterMapping zu verwenden, da es sauberer ist (meiner Meinung nach)

Verwandte Themen