当前位置: 首页 > 面试题库 >

如何告诉Dozer使用编程API绕过每个字段映射空值或空字符串值?

索锐藻
2023-03-14
问题内容

常见问题解答说明了如何使用XML进行此操作。这显示了如何使用API按类进行操作。问题是您必须在课堂上设置它。如果我只想在一个领域上怎么办?这可能吗?


问题答案:

为此,我可以创建自己的自定义转换器来实现所需的功能。这是代码:

import org.apache.commons.lang.StringUtils;
import org.dozer.DozerConverter;

public class IfNotBlankConverter extends DozerConverter<String, String> {

    public IfNotBlankConverter() {
        super(String.class, String.class);
    }

    private String getObject(String source, String destination) {
        if (StringUtils.isNotBlank(source)) {
            return source;
        } else {
            return destination;
        }
    }

    @Override
    public String convertTo(String source, String destination) {
        return getObject(source, destination);
    }

    @Override
    public String convertFrom(String source, String destination) {
        return getObject(source, destination);
    }
}

第二个:

import org.dozer.DozerConverter;

public class IfNotNullConverter extends DozerConverter<Object, Object> {

    public IfNotNullConverter() {
        super(Object.class, Object.class);
    }

    @Override
    public Object convertTo(Object source, Object destination) {
        return getObject(source, destination);
    }

    @Override
    public Object convertFrom(Object source, Object destination) {
        return getObject(source, destination);
    }

    private Object getObject(Object source, Object destination) {
        if (source != null) {
            return source;
        } else {
            return destination;
        }
    }

}


 类似资料:
  • 嗨,我尝试将以下Source类映射到以下Destation类。我使用了以下映射以将字符串值映射到列表字符串。它没有正确映射。我需要知道如何使用Dozer将2个字符串值映射到一个目标字符串列表中。

  • 我试图将名称字段索引到elasticsearch中,名称可能是字符串或空字符串(),我希望搜索所有包含空值的名称,所以我使用筛选器,但对于筛选器,空值不是空值。 https://www.elastic.co/guide/en/elasticsearch/reference/1.4/query-dsl-exists-filter.html 查询DSL: 如何将空字符串作为elasticsearch筛

  • 我有一个方法,它返回字符串类型的字段对象列表。 这个方法应该将所有字符串字段都大写: 问题是:"field.set(...)"不起作用。它应该将值大写并将其设置为该字段的新值,但它不起作用...我如何解决这个问题的任何想法?(PS:在真正的代码中,"something Class.class"被设置为真正的类名...) 正在生成的错误是field.get(this)方法(insdefield.se

  • 问题内容: 我有一个方法: 当运行时,我得到如下输出: 现在我该怎样提取实际字符串值入, 使用反射? 问题答案: 看起来您需要引用该类的实例。您可能要调用get和pass的引用,将返回值转换为String。 您可以使用get,如下所示:

  • 问题内容: 我正在尝试使用Jackson将一些JSON对象映射到Java对象。JSON对象中的某些字段是必填字段(可以用标记),而某些字段是可选字段。 用Jackson映射之后,在JSON对象中未设置的所有字段在Java中都将具有空值。是否有类似的注释可以告诉Jackson为Java类成员设置默认值(如果为null)? 编辑:为了使问题更清楚,这里是一些代码示例。 Java对象: JSON对象可以

  • 我正在尝试用Jackson将一些JSON对象映射到Java对象。JSON对象中的一些字段是强制性的(我可以用标记),而一些字段是可选的。 在与Jackson进行映射之后,JSON对象中没有设置的所有字段在Java中都将有一个空值。是否有类似于的注释可以告诉Jackson为Java类成员设置默认值,以防它为空? 或: 注释只是为了显示我的要求。这不是真正的注解。如果JSON对象与第一个示例类似,我希