1

userID フィールドを持つ UserDTO があります。HashMap には、この DTO がキー User_Details の値として含まれています。

DOZER マッピングを使用して、 userID 属性をHashMap->User_Details->userIdから属性UserDisplayDTO->userIdに設定したいと考えています。

Dozer XML マッピングでこれを行うにはどうすればよいですか?

<mapping map-id="testMapping">
    <class-a>java.util.HashMap</class-a>
    <class-b>com.common.dto.UserDisplayDTO</class-b>
    <field>
        <a key="User_Details">this</a>
        <b>userId</b>
    </field>
</mapping>
4

1 に答える 1

2

これにはカスタム コンバーターを定義する必要があります。Atm、dozer xml マッピングは、キーベースのハッシュマップ ルックアップをサポートしていません。

したがって、あなたの場合、次のようなものが必要です

<field custom-converter="com.your.custom.converter.UserIdConverter">
    <a>hashmapfield</a>
    <b>userId</b>
</field>

UserIdConverter の実装では、ハッシュマップから値を取得して返す必要があります (明確にするために null チェックなどは省略されています)。

@Override
public Long convertTo(HashMap map, Long userId) {
    UserDTO dto = (UserDTO)map.get("User_Details");
    return dto.getUserId();
}
于 2011-11-23T14:04:21.797 に答える