问题引入:
//boolean属性:是否显示
private boolean isShowCode ;
//使用Eclipse自动生成getter/setter方法如下:
public boolean isShowCode() {
return isShowCode;
}
public void setShowCode(boolean isShowCode) {
this.isShowCode = isShowCode;
}
spring在给java bean 设置值的时候, 抛出异常:
Caused by: org.springframework.beans.NotWritablePropertyException:
Invalid property 'isShowCode' of bean class [com.codemouse.beans.Country]:
Bean property 'isShowCode' is not writable or has an invalid setter method.
Did you mean 'showCode'?
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1064)
获取到的java bean 信息中的isShowCode属性的名称已经被改成了"showCode"。
由于属性名isShowCode的is没有去掉, 以致java bean类违背了java bean 的命名规范。
JavaBean 的属性名和getter/setter存取方法规则小结:
1. 对于常规属性 <propertyName> , 属性名称的第一个单词小写且字母个数大于1,第二个单词首字母大写 。对应的getter/setter方法名为:get /set + <PropertyName>(), 即属性名称的第一个单词的首字母改成大写, 前面再加上"get"或"set"前缀。
2. 对于布尔类型 <propertyName> , 可以按常规属性的规则编写getter/setter方法外, getter方法可以使用 is + <PropertyName>()的形式来代替。
3. 对于非常规属性<pName>, 属性名称的第一个单词小写且字母个数等于1,第二个单词首字母大写
4.注意的是,javabean:boolean和Boolean类型的getter方法名是有区别的:
对于boolean类型,生成的getter方法名都是isProperty(getProperty仍然可用)
对于Boolean,只能使用getProperty