浏览 3595 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-05
最后修改:2009-06-08
标题有点大,但确实因为这个自动getter让我查代码查了几天,差点要改实现方法了.
为简化,对应VO就不贴出来了
java pojo:
/** *为简化,只列举两个字段 */ public class WestMedicationBo implements Serializable { private static final long serialVersionUID = 1L; private boolean isPaid; private long rpId; //以下是用eclipse自动自动getter,setter得到,主要注意boolean类型 public boolean isPaid() { return isPaid; } public void setPaid(boolean isPaid) { this.isPaid = isPaid; } //getter,setter.... }
使用BlazeDS与java交互,你会很郁闷的发现isPaid直接给它true,到前台也得到的只是false,开始还怀疑莫非boolean映射有问题?后来突然想到,amf将java数据反序列化回vo时,应该是直接调用java 对象的get方法,而将vo转换为java对象时则是调用setter。这里ide自动生成的getter,setter对boolean需要我们手动调整,将上面getter,setter代码改为: public boolean getIsPaid() { return isPaid; } public void setIsPaid(boolean isPaid) { this.isPaid = isPaid; } 即可实现java对象boolean和as boolean的双向映射了。郁闷之下,差点准备将几个boolean字段改为String来实现了. ps:je的代码功能还需要加强,排版排了半天也还有问题,算了不排了
================= 写了个新手帖...
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-06-05
可以改用Boolean类型,应该就行了吧。
|
|
返回顶楼 | |
发表时间:2009-06-05
问题在于你那个变量的开始是is,你把它改成如:
private boolean aisPaid; 别的时它自动生成的get,set就是好的了 至于原因我也说不明白, |
|
返回顶楼 | |
发表时间:2009-06-05
习惯上我们设定get/setXXX时,如果是boolean型,一般getXXX都自动生成为isXXX。自动处理方法并没有错误。你这个是特殊情况特别解决。应该单独增加一个getXXX方法名。
|
|
返回顶楼 | |
发表时间:2009-06-06
最后修改:2009-06-06
lfrick 写道 可以改用Boolean类型,应该就行了吧。 老早试过了,不行的。 blazeDS它就是根据字段的getter,setter将数据反序列化装入vo中 |
|
返回顶楼 | |
发表时间:2009-06-06
这变量命名就不合理
|
|
返回顶楼 | |
发表时间:2009-06-06
dennis_zane 写道 这变量命名就不合理
变量名直接设成paid多好 使用自动生成,肯定要符合一定规则的 |
|
返回顶楼 | |
发表时间:2009-06-07
gmizr 写道 dennis_zane 写道 这变量命名就不合理变量名直接设成paid多好 使用自动生成,肯定要符合一定规则的 以下是我重新命名并生成得到的代码,出来的结果还是一样。这是由于AMF反序列化回as 对象的机制决定的,跟变量命名没关系: package cn.com.kerlon; public class MyCls{ private boolean paid; public boolean isPaid() { return paid; } public void setPaid(boolean paid) { this.paid = paid; } } |
|
返回顶楼 | |
发表时间:2009-06-07
还真的 为什么boolean 一生成set get 就生错呢?
|
|
返回顶楼 | |
发表时间:2009-06-07
whaosoft 写道 还真的 为什么boolean 一生成set get 就生错呢? 不是出错。这是Sun的编码规范中,读取boolean的方法不是以get开头而是以is开头。ActionScript中没有这个规则,进行序列化的时候找不到get方法是当然的。 |
|
返回顶楼 | |