2013-12-17 108 views
2

我正在做POJO到CSV之间的数据格式转换,反之亦然。在将CSV转换为Object文件(Unmarshalling)的同时,我收到了int数据类型的非法参数异常。只为字符串它的工作正常。 下面是我POJOApache骆驼:bindy非法参数异常

@CsvRecord(separator="//|",crlf="UNIX",generateHeaderColumns=false) 
public class EmployeeVO implements Serializable{ 

    private static final long serialVersionUID = -663135747565879908L; 

    @DataField(pos=1) 
    private String name; 

    @DataField(pos=3) 
    private Integer age; 

    @DataField(pos=2) 
    private String grade; 
     // getter setter 
} 

CSV数据

sumit|4th standrad|22 

从上述POJO生成上述CSV。但在CSV转换成POJO的时候我得到folloing例外

java.lang.IllegalArgumentException: Parsing error detected for field defined at the position: 3, line: 1 

以下是我的骆驼 - 上下文文件,供您参考

元帅

<route> 
     <from uri="cxf:bean:rtoemplyeeService"/> 
     <convertBodyTo type="java.lang.String" id="stringInput"/> 
     <bean ref="govtEmpBean" method="getEmployeeCSV" beanType="govtEmpBean" id="govtEmp"/> 
     <log message="before marshalling ================== ${body}"/> 
     <marshal ref="bindyDataformat"> 
      <bindy type="Csv" packages="com.mycompany.converter.vo"/> 
     </marshal> 
     <log message="after marshalling ================== ${body}"/> 
     <to uri="file://D:/JATO_WORK/repo_bkp/csv/"/> 
     <setBody> 
      <simple>CSV output is generated at file system </simple> 
     </setBody> 
    </route> 

未元帅

<route id="csvtoobject"> 
     <from uri="file://D:/JATO_WORK/repo_bkp/csv?delay=10000&amp;initialDelay=10"/> 
     <log message="csv string ============= ${body}"/> 
     <unmarshal ref="bindyDataformat"/> 
     <log message="${body}"/> 
     <bean ref="govtEmpBean" method="printCSVObject" beanType="govtEmpBean" id="govtEmp"/> 
    </route> 
+0

是POJO的POD类型的java术语? –

+0

它是一个普通的旧Java对象,简单的带有属性和getter setter的java bean – vashishth

回答

1

您需要指定csv记录如下

@CsvRecord(separator = "\\|")