首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

commons-betwixt的一些施用

2012-07-20 
commons-betwixt的一些应用环境:commons-betwixt-0.8.jar和commons-digester-2.1.jar(这个地方digester的j

commons-betwixt的一些应用
环境:
commons-betwixt-0.8.jar和commons-digester-2.1.jar(这个地方digester的jar包可以是1.8版本,但千万不能是3.0版本的)
java-version-5.0

commons-betwixt对带有集合javabean转换的约定:
1、集合属性的名字要以集合元素类的名字开头(大小写不敏感);
2、每个Bean都必须有一个不带参数的构造方法。或者bean不要写任何构造方法(这样实际上有一个默认的不带参数的构造方法)。
3、每个对于包含其他Bean集合的Bean,要有一个addXxxBean(XxxBean bean)的方法,只有这样,才能保证将xml转换为java的时候,集合属性不丢失。

例子:一个人Person可以有多个宠物Pet,现在创建一个Person,将其转换为XML,然后做个逆转。

Pet.java代码:



Person.java代码:


TestBetwixt.java代码:
log4j:WARN No appenders could be found for logger (org.apache.commons.betwixt.io.AbstractBeanWriter).log4j:WARN Please initialize the log4j system properly.log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.<?xml version='1.0' ?>  <Person>    <age>24</age>    <name>唐伯虎</name>    <petList>      <pet>        <color>黄色</color>        <nikename>旺财</nikename>      </pet>      <pet>        <color>灰色</color>        <nikename>小强</nikename>      </pet>    </petList>  </Person>Person{name='唐伯虎', age=24, petList=Pet{nikename='旺财', color='黄色'};Pet{nikename='小强', color='灰色'};}


看到了吧,双向转换成功了。

但是修改下petList属性的名字,修改下getPetList、setPetList的名字,去掉默认的构造方法,使得不符合上面的约定原则,双向转换就失败了。

另外,经过commons-betwixt还有一个问题,就是在将xml转Java过程中,如果日期数据元素为空,则导致转换失败。解决办法是,将java转xml的时候,设置忽略空元素beanWriter.setWriteEmptyElements(false);,在将xml转java 的时候,空日期元素删除掉即可。

热点排行