解决Appfuse使用中的一些问题的方法
解决Appfuse使用中的一些问题的方法
我一直比较喜欢Appfuse这个框架,主要是因为这个框架比较规范。在这个框架下做事,可以养成比较好的工程习惯,比如包组织,命名,工程管理等。最近使用的版本是1.9.2,使用了 WebWork+Spring+iBatis 这样的组合。在使用过程中,发现了不少问题,把解决的过程记录下来,可以有个参考。
1、dbunit 测试oracle
在dbunit任务中增加 scheme="abc" , abc 是表空间的名字。2、ibatis 执行报错:sql执行语句为空。
.xml 文件中配置的sql语句最后有";",mysql对逗号不敏感,但oracle下面会出错3、ibatis 中增加一条记录,其中id为自动增长
增加一段selectKey 在insert段配置中,注意Oracle数据库中这段必须写在sql语句前面。 同时sql语句中要包括id字段。<insert id="addRole" parameterClass="role"> <selectKey resultClass="java.lang.Long" keyProperty="id"> SELECT SEQ_ROLE_TABLE.nextVal as ID FROM dual </selectKey> <![CDATA[ insert into role_table (id, name, description) values (#id#, #name#, #description#) ]]> </insert>SEQ_ROLE_TABLE 是一个Oralce 的序列对象。最好针对每一个表建立一个。
4、中文问题
displaytag导出pdf中文问题。这个问题无法简单解决,只能下载displaytag的源代码,在 org.displaytag.export.PdfView.java中的initTable()方法中, 去掉原来的取字体语句smallFont = FontFactory.getFont(FontFactory.HELVETICA, 7, Font.NORMAL, new Color(0, 0, 0));增加新的取中文普通宋体字体的语句
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED); Font FontChinese = new Font(bfChinese, 12, Font.NORMAL); 当然了,还要增加一个包括字体的包:iTextAsian.jar。
5、对象初始化的问题
凡是需要通过ibatis创建的对象,必须有一个无参数,public的构建函数。如果没有任何显式定义的构建函数也可以,因为默认就是无参数public的。如果没有这个函数,iBatis在创建对象时,创建过程会出错。