在SSH框架中写写某个添加功能,发现数据库中的某个字段竟然没有改变。页面数据传到后台,我用的是ajax的序列化。于是我打印序列化后的数据,发现页面数据没有问题,但是当数据传后后台的action里面的时候,方向这个 private int pCount;这个的值是0.这个的数据竟然没有传过来,显示是 0 。这就有点尴尬了。
由于不知道这个问题出现在哪里,于是通过百度,在百度上面的无数资料中查看相关问题。通过漫长的百度。终于发现了问题所在,原来是我的这个字段命名出现了问题。
网上说:javabean属性命名尽量使用常规的驼峰式命名规则。
当时写了 private int pCount. 并且使用myeclipse里面的功能生成其的get和set方法。看下生成的方法:
如果和javabean属性命名尽量使用常规的驼峰式命名规则对照着看 你就会方向问题了。规则:
1. 对于常规属性 <propertyName> , 属性名称的第一个单词小写且字母个数大于1,第二个单词首字母大写 。对应的getter/setter方法名为:get /set + <PropertyName>(), 即属性名称的第一个单词的首字母改成大写, 前面再加上"get"或"set"前缀。
2. 对于布尔类型 <propertyName> , 可以按常规属性的规则编写getter/setter方法外, getter方法可以使用 is + <PropertyName>()的形式来代替。
3. 对于非常规属性<pName>, 属性名称的第一个单词小写且字母个数等于1,第二个单词首字母大写 。
这样就可以发现问题了。生成的get和set方法的除get/set外的首字母必须大写,而这里确实小写,这就会出现前面的问题,页面的参数传不到action。
以后需要避免:属性名第一个单词尽量避免使用一个字母:如pCount。
boolean属性名避免使用 “is” 开头的名称