当前位置: 首页 > 知识库问答 >
问题:

推土机-使用自定义创建方法

花阳秋
2023-03-14

我不确定我是否正确理解推土机映射器中的自定义创建方法。我需要将int类型的bean属性转换为TransTypeCodebook对象实例。但我得到了:

2013-09-13 15:47:27,009 [main] ERROR org.dozer.MappingProcessor  - Field mapping error    -->
MapId: null
Type: null
Source parent class: cz.jaksky.dozer.a.HolderA
Source field name: transType
Source field type: class java.lang.Integer
Source field value: 0
Dest parent class: cz.jaksky.dozer.b.HolderB
Dest field name: transTypeCodebook
Dest field type: cz.jaksky.dozer.b.codebook.TransTypeCodebook
org.dozer.MappingException: Illegal object type for the method 'setTransTypeCodebook'. 
Expected types: 
cz.jaksky.dozer.b.codebook.TransTypeCodebook
Actual types: 
java.lang.String

我的TransTypeCodebook课程

public class TransTypeCodebook extends Codebook {
private int code;
private String label;

private TransTypeCodebook(int code, String label) {
    this.code = code;
    this.label = label;
}

public int getCode() {
    return code;
}

public String getLabel() {
    return label;
}

public static TransTypeCodebook getCodebook(int code) {
    TransTypeCodebook result;

    switch (code) {
        case 0:
            result = new TransTypeCodebook(0, "Case0");
            break;
        case 1:
            result = new TransTypeCodebook(1, "Case1");
            break;
        default:
            result = new TransTypeCodebook(code, "Not a valid code");
    }

    return result;
}

}

映射器部分

 <field>
        <a>transType</a>
        <b create-method="getCodebook">transTypeCodebook</b>
 </field>

我设法通过自定义转换器解决了这个问题,但我不确定我是否理解自定义创建方法的概念,我想知道这个字符串是从哪里来的。有人能解释一下吗?

共有1个答案

壤驷乐邦
2023-03-14

我不太确定,但要使用这样的静态方法,需要指定其完全限定名。

<b create-method="your.domain.TransTypeCodebook.getCodebook">transTypeCodebook</b>

这在推土机文档中有说明。

 类似资料:
  • 请注意:如果这确实是实现我所寻找的目标的唯一方法,那么我会接受基于XML的解决方案,但我更喜欢使用Dozer的Java API的解决方案。 我是推土机的新手,正在尝试了解如何使用其API。它似乎默认为字段级映射(如果字段名称匹配),并允许在字段级映射(基于字段名称)不可能或不符合应用程序需要的情况下使用自定义映射器和转换器。 我有一种情况,我的应用程序将接受一个DTO,例如,

  • 我一直在寻找在推土机映射中设置常量值的解决方案,并且在stackoverflow上阅读了很多关于这个问题的答案。所以我决定使用推土机自定义转换器。 让我澄清一下我的情况。 我有两个具有以下字段的bean: 豆A: Bean B: 的字段应始终等于。 因此,我创建了一个自定义转换器: 以及以下映射: 它工作得很好,并将值设置为。但是这种方法看起来很糟糕: 我必须在XML映射中设置一个字段作为源,才能

  • 问题内容: 我需要为我的项目创建一个自定义URI方案。即 -不透明的表示 -分层表示。 如何将方案添加到Java URI类?或者,如何使Java URI理解我的方案,以便可以在代码中使用它? 欢迎提供具体示例。 谢谢。 问题答案: 您确定需要创建一个新的URI方案吗? 创建特定于实现的方案被认为是不好的做法。 看到: http://infomesh.net/2001/09/urischemes h

  • 在Dozer的帮助下,我想将映射到DTO类 但是这两种设置

  • 考虑以下类。如何在不使用自定义转换器的情况下使用Dozer将A类转换为B类? 有人能为上述类提供推土机映射XML吗?

  • 问题内容: 我想问一个与这个问题相同的问题,但使用SWT:是否有一种方法可以制作带有您自己的按钮图形的按钮,而不仅仅是按钮内的图像?如果不是,这是在Java中创建自定义按钮的另一种方法吗? 问题答案: public class ImageButton extends Canvas { private int mouse = 0; private boolean hit = false;