【问题标题】:Skip field globally in ModelMapper在 ModelMapper 中全局跳过字段
【发布时间】:2014-09-15 06:57:59
【问题描述】:

在反序列化对象时,我正在使用 ModelMApper 将对象从 DTO 映射到 Impl。这是结合 JAxRS 完成的。当用户发出 POST/PUT 请求时,我不希望“id”被映射。

我需要跳过所有映射的“id”字段。我不想一一做这件事,因为不一定有所有类的显式映射。如何配置映射器以跳过所有 DTO 到 Impls 映射的所有“id”字段。

谢谢

【问题讨论】:

    标签: java jax-rs modelmapper


    【解决方案1】:

    一种方法是使用条件有条件地映射(或不映射)id 属性。像这样的东西(未测试):

    Condition skipIds = new Condition() {
        public boolean applies(MappingContext<Object, Object> context) {
            return !context.getMapping().getLastDestinationProperty().getName().equals("id");
        }
    };
    
    modelMapper.getConfiguration().setPropertyCondition(skipIds);
    

    这会将skipIds 条件设置为全局用于所有属性,因此将跳过将值映射到名称为“id”的任何目标属性。

    【讨论】:

    • 在执行modelMapper.validate() 时使用它似乎并不能防止Unmapped destination properties found 错误
    • 注意:我添加了&lt;Object, Object&gt;参数以避免java中的警告。
    【解决方案2】:

    @Jonathan 的解决方案对我有用,只需稍作修改。我不得不改变

    public boolean applies(MappingContext<S, D> context)
    

    public boolean applies(MappingContext context)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 2018-05-23
      • 2012-03-11
      • 1970-01-01
      相关资源
      最近更新 更多