gpt4 book ai didi

java - Dozer - 在转换器之后调用映射器

转载 作者:太空宇宙 更新时间:2023-11-04 15:02:59 24 4
gpt4 key购买 nike

我有一个推土机映射,它通过参数通过自定义转换器返回用户。这可以正常工作,但现在该用户应该转换为官方。

我尝试通过让转换器返回用户并制作另一个 dozer xml 文件将用户转换为官方来实现此目的。我将这个xml文件添加到dozerfactory中,但它似乎没有被调用。

我收到:“预期官方,实际:用户”。如何让 userToOfficial.xml 文件被调用?

第一个推土机文件:

<mapping>
<class-a>be.someClass</class-a>
<class-b>be.anotherClassWithOfficial</class-b>


<field custom-converter-id="OfficialConverter">
<a>someString</a>
<b>official</b>
</field>

尝试添加,但不起作用:

<b-hint>be.Official</b-hint>

第二个推土机文件(应该在转换器之后调用,但没有):

<mapping>
<class-a>be.User</class-a>
<class-b>be.Official</class-b>
<field>
<a>mail</a>
<b>email</b>
</field>

转换器:

public class OfficialConverter implements CustomConverter {

/** The ldap local. */
private UserLocal userLocal;

@Override
public Object convert(Object existingDestinationFieldValue, Object sourceFieldValue,
Class < ? > destinationClass, Class < ? > sourceClass) {
if (sourceFieldValue == null) {
return null;
}
if (sourceFieldValue instanceof String) {
User user= userLocal
.getUserByLogin((String) sourceFieldValue);
return user;

}
return null;
}

public UserLocal getUserLocal() {
return userLocal;
}


public void setUserLocal(UserLocal userLocal) {
this.userLocal= userLocal;
}

}

最佳答案

根据您的自定义转换器,您似乎是从 String 映射的至User现在代替 User ,您想要一个 Offical 的对象。正确的?你想自动化这个 UserOffical使用推土机进行转换。正确的?如果是,那么您需要使用 mapper.map() 在自定义转换器本身中调用新的推土机方法。您当前的用例不会自动调用它。

关于java - Dozer - 在转换器之后调用映射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22356547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com