首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Dozer :列表的字符串到日期字段级别映射

Dozer :列表的字符串到日期字段级别映射
EN

Stack Overflow用户
提问于 2015-01-09 16:09:30
回答 1查看 6.4K关注 0票数 0

我想将一个DTO (都是字符串数据类型)映射到VO (包含字符串、int、布尔值、日期)。

StudentDTO

代码语言:javascript
运行
复制
private StudentDetailDTO student;

StudentDetailDTO :

代码语言:javascript
运行
复制
private String sid;
private String name;
private String createDt;
private String studentInd;
private List<FeeReceiptDTO> feeDetails;

FeeReceiptDTO:

代码语言:javascript
运行
复制
private String semisterNum;
private String feeAmount;
private String paidOn;

StudentDetailVO :

代码语言:javascript
运行
复制
private int sid;
private String name;
private Date createDt;
private boolean studentInd;
private List<FeeReceiptVO> feeDetails;

FeeReceiptVO:

代码语言:javascript
运行
复制
private int semisterNum;
private Double feeAmount;
private Date paidOn;

我使用DOZZER将我的DTO映射到VO 字符串-日期-DozzerMapping

DozzerMapper.xml

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://dozer.sourceforge.net http://dozer.sourceforge.net/schema/beanmapping.xsd">

    <mapping date-format="MM/dd/yyyy HH:mm" map-null="true" map-empty-string="true" wildcard="true" type="one-way" >
        <class-a>com.college.student.dto.StudentDTO</class-a>
        <class-b>com.college.student.vo.StudentVO</class-b>
        <field>
            <a>student.sid</a>
            <b>sid</b>
        </field>
        <field>
            <a>student.name</a>
            <b>name</b>
        </field>
        <field>
            <a>student.createDt</a>
            <b>createDt</b>
        </field>
        <field>
            <a>student.studentInd</a>
            <b>studentInd</b>
        </field>
        <field>
            <a date-format="MM/dd/yyyy HH:mm">student.feeDetails</a>
            <b>feeDetails</b>
        </field>

    </mapping>
</mappings>

但是,feeDetails中的日期(即,paidOn )无法从字符串到日期格式化。

我做错什么了吗?

我需要只为这个CustomStringToDateConvertor字段编写一个paidOn吗?

错误日志:

代码语言:javascript
运行
复制
ERROR [org.dozer.MappingProcessor] (http-localhost-127.0.0.1-9090-1) Field mapping error -->
  MapId: null
  Type: null
  Source parent class: com.college.student.dto.StudentDTO
  Source field name: paidOn
  Source field type: class java.lang.String
  Source field value: 01/01/2015 01:01
  Dest parent class: com.college.student.vo.StudentVO
  Dest field name: paidOn
  Dest field type: java.util.Date: org.dozer.converters.ConversionException: Unable to determine time in millis of source object
    at org.dozer.converters.DateConverter.convert(DateConverter.java:81) [dozer-5.4.0.jar:]
    at org.dozer.converters.PrimitiveOrWrapperConverter.convert(PrimitiveOrWrapperConverter.java:70) [dozer-5.4.0.jar:]

我试着调试,我发现这个日期的dateFormat将在Dozzer org.dozer.converters.DateConvertor的日期转换器中作为null出现。

我在date-format上定义了field-level,但是对象的List不受影响。

还有别的办法吗?

EN

Stack Overflow用户

回答已采纳

发布于 2015-01-14 11:36:32

因为,Dozer无法转换String-To-Date - At Field Level Mapping for a List

我为列表定义了一个新的映射,即将它视为一个Object

我换了DozerMapper.xml

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://dozer.sourceforge.net http://dozer.sourceforge.net/schema/beanmapping.xsd">

<mapping date-format="MM/dd/yyyy HH:mm" map-null="true" map-empty-string="true" wildcard="true" type="one-way" >
        <class-a>com.college.student.dto.FeeReceiptDTO</class-a>
        <class-b>com.college.student.vo.FeeReceiptVO</class-b>
</mapping>

    <mapping date-format="MM/dd/yyyy HH:mm" map-null="true" map-empty-string="true" wildcard="true" type="one-way" >
        <class-a>com.college.student.dto.StudentDTO</class-a>
        <class-b>com.college.student.vo.StudentVO</class-b>
        <field>
            <a>student.sid</a>
            <b>sid</b>
        </field>
        <field>
            <a>student.name</a>
            <b>name</b>
        </field>
        <field>
            <a>student.createDt</a>
            <b>createDt</b>
        </field>
        <field>
            <a>student.studentInd</a>
            <b>studentInd</b>
        </field>
        <field>
            <a>student.feeDetails</a>
            <b>feeDetails</b>
        </field>

    </mapping>
</mappings>
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27864640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档