一个关于Java变量命名和代码生成的差异

1 情景描述:

 

- 服务端使用 thrift,自动生成java代码!

- WEB程序使用spring,ibatis等,在JSP页面用JSTL标签等。

 

2 问题发生:

 

有一天在页面用 ${payment.tBegin} 访问时间字段,死活都是异常,说是找不到 payment对象的tBegin属性!

 

经过仔细检查,没有发现异常;变量名完全正确,get set方法正确; 在controller里也可以访问到tBegin属性!

 

3 找了别人一起看,没看出来!

 

一日,再次自个琢磨,发现一个差异:payment的所有属性字段中,tBegin有一点不同 - 它的第二个字母是大写! --- 不要小瞧这个差异,后来问题就是从这里得到解决的。。。

 

 

4 终于有一天,我们开始怀疑是因为tBegin的第二个大写才引起的问题! 马上写了一个class去测试,发现:

 

- eclipse的代码生成,以及 jstl都主张: 如果一个属性名的第二个字母是大写,那么get set方法生成时,继续保留首字母小写,即 gettBegin(), settBegin() 

 

- thrift 在 thrift java *.thrift 时,对于类似tBegin这样的,直接生成为 getTBegin(),setTBegin() !

 

 

!!!汗,瀑布汗!!!

你可能感兴趣的:(eclipse,spring,jsp,Web,ibatis)