【问题标题】:I need to check for validity of data before deep mapping with dozer, can I?在使用推土机进行深度映射之前,我需要检查数据的有效性,可以吗?
【发布时间】:2012-05-10 19:41:13
【问题描述】:

我正在使用推土机在我的模型实体和我的 DTO 之间进行映射。 现在我面临的问题是我需要将 classA.classC 的一些属性映射到 classB 的不同属性,但首先我需要检查不一致,因为如果我没有classC会抛出异常并且映射不起作用。

所以假设我有:

class ClassA {

   private String name;
   private ClassC c;


   public ClassC getC() throws ValidityException; 
}

class ClassB {

   private String code;
   private Integer value;

}

class ClassC {

   private String name;
   private Integer value;

   // Getters & Setters below
}

所以现在我想这样映射:

<mapping>
   <class-a>ClassA</class-a>
   <class-b>ClassB</class-b>
   <field>
      <a>c.name</a>
      <b>code</b>
   </field>
   <field>
      <a>c.value</a>
      <b>value</b>
   </field>
 </mapping>

如果从 ClassA 实例访问 ClassC 实例引发异常,我将需要为两个 b 属性映射 null。 根据我所阅读的内容,我假设我应该使用 CustomConverter 来访问 ClassC 实例,在这种情况下捕获异常并映射 null,但不确定如何实现这种转换器。

谁能给我一些关于如何使用 Dozer 实现这一点的想法?

【问题讨论】:

    标签: dozer


    【解决方案1】:

    您确定您编写了正确的映射吗?因为,

    <field>
      <a>c.name</a>
      <b>name</b>
    

    在上面的 sn-p 中,你写了 classB 的名字。其实应该是代码。

    【讨论】:

    • 是的,我更正了这一点,谢谢,不幸的是它不会改变问题中的概念。
    • 默认情况下,dozer 有 map-null="true"。因此,即使 sorce 属性为 null ,它们也会被映射。如果我遗漏了什么,请纠正我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 2011-01-12
    相关资源
    最近更新 更多