我的代码中发生了一些不可思议的事情。这是Bean的代码段:
public List<HelpContentsFrag> getCFrags() { return cFrags; } public void setCFrags(List<HelpContentsFrag> frags) { cFrags = frags; }
这是我的查看代码(标记文件)中的代码段
cFrags:[${topic.cFrags}]
其中topic是Bean类型的对象。
这是错误:
javax.el.PropertyNotFoundException: Property 'cFrags' not found on type com.company.beans.BeanClass
还有一件事要考虑。蚀产生的二传手之间有细微的差别。显然,它也不喜欢cFrags这个名字。字段名称为cFrags,每隔一个设置器,我就会获得与该字段同名的参数,并使用约定对其进行设置this.fieldName = fieldName。您会注意到,月食不符合此设置器的要求。
this.fieldName = fieldName
仅供参考:当我将吸气剂更改为getContentsFrag()并引用它时,所有这些都很好用.contentsFrag。
getContentsFrag()
.contentsFrag
我相信你想要:
cFrags:[${topic.CFrags}]
带有大写的C。请参阅JavaBeans Spec:
8.8推断名称的大写。 当我们使用设计模式来推断属性或事件名称时,我们需要决定遵循哪些规则来大写所推断的名称。如果我们从普通的MixedCase样式Java名称的中间提取名称,则该名称默认情况下将以大写字母开头。Java程序员习惯于使普通标识符以小写字母开头。审阅者的大力投入使我们确信,对于属性和事件名称,我们应该遵循相同的常规规则。 因此,当我们从现有Java名称的中间提取属性或事件名称时,通常会将第一个字符转换为小写。但是,为了支持偶尔使用所有大写名称,我们会检查名称的前两个字符是否均为大写,是否保留为大写。例如 “ FooBah”变成“ fooBah” “ Z”变成“ z” “ URL”变成“ URL” 我们提供了Introspector.decapitalize方法,该方法实现了此转换规则。
当我们使用设计模式来推断属性或事件名称时,我们需要决定遵循哪些规则来大写所推断的名称。如果我们从普通的MixedCase样式Java名称的中间提取名称,则该名称默认情况下将以大写字母开头。Java程序员习惯于使普通标识符以小写字母开头。审阅者的大力投入使我们确信,对于属性和事件名称,我们应该遵循相同的常规规则。
因此,当我们从现有Java名称的中间提取属性或事件名称时,通常会将第一个字符转换为小写。但是,为了支持偶尔使用所有大写名称,我们会检查名称的前两个字符是否均为大写,是否保留为大写。例如
“ FooBah”变成“ fooBah” “ Z”变成“ z” “ URL”变成“ URL”
我们提供了Introspector.decapitalize方法,该方法实现了此转换规则。