浏览 4799 次
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-02
java 代码
你会发现用 BeanUtils 无法读取或保存其“eMail”属性,但是将属性名改成“myMail”之后就可以了。似乎只要第一个字母小写、第二个字母大写的情况就会出现这种 BUG。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-11-02
struts时就常遇到,原来根子上是bean util的问题。。。
|
|
返回顶楼 | |
发表时间:2007-11-05
看了一下 beanutils 的代码,然后发现无语了:根子还不在 beanutils,却是在 java.beans.Introspector 这个类。代码如下:
public static void main(String[] args) throws Exception { BeanInfo beanInfo = Introspector.getBeanInfo(Address.class); PropertyDescriptor[] properties = beanInfo.getPropertyDescriptors(); for (int i = 0; i < properties.length; i++) { PropertyDescriptor property = properties[i]; System.out.println(property.getName()); } } 输出来却是: EMail class homeNumber mobileNumber officeNumber personName “eMail”被他变成了“EMail”了。 |
|
返回顶楼 | |
发表时间:2007-11-05
说实在的,这不应该是bug,因为javabean的规范就是这么规定的,所以JDK也是这样实现的。但是写javabean的人其实并没有了解javabean的规范所以才产生这样的疑问。这跟不按照Java语法写Java程序那当然是编译不过去是一样的。
可能我现在问大家什么是javabean,也没有几个人能回答的出来。不过这也没什么,对实际开发的意义也不大。只是我疑问的是为什么这样的帖子居然还会有15个好评。 |
|
返回顶楼 | |
发表时间:2007-11-05
max.h.chen 写道 说实在的,这不应该是bug,因为javabean的规范就是这么规定的,所以JDK也是这样实现的。但是写javabean的人其实并没有了解javabean的规范所以才产生这样的疑问。这跟不按照Java语法写Java程序那当然是编译不过去是一样的。
可能我现在问大家什么是javabean,也没有几个人能回答的出来。我疑问的是为什么这样的帖子居然还会有15个好评。 在入门区么,很长见识啊。 而且对于javabean的规范这东西就如同魔鬼的契约, 很少有人会去仔细看的。 由于中英文的命名差异所以很多人会莫名奇妙的中招 还不知道到哪里去找问题的根源。 PS:我一个人权重就是15的说 |
|
返回顶楼 | |
发表时间:2007-11-07
到网上确认了一下是否有“javabean的规范就是这么规定的”的说法,结果发现找到的关于 javabean 属性命名的指导文章都没有提到这种情况,只在SDN的论坛上找到一篇没有什么价值帖子:
http://forum.java.sun.com/thread.jspa?threadID=5165269&messageID=9631752 |
|
返回顶楼 | |
发表时间:2007-11-08
http://java.sun.com/products/javabeans/docs/spec.html
从上面的网站将javabean spec下载下来后,跳到8.8 Capitalization of inferred names章节,你自己看就是了。 |
|
返回顶楼 | |
发表时间:2007-11-08
受教了
我明明可以看到那个对号了,怎么还不可以投票呢 |
|
返回顶楼 | |
发表时间:2007-11-08
你没星,也没有钻。。。。
|
|
返回顶楼 | |
发表时间:2007-11-09
看来只是把初级会员不能评分的字样去掉而已
|
|
返回顶楼 | |