我的代码中发生了神秘的事情。这是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对其进行设置。您会注意到,月食不符合此设置器的要求。

仅供参考:当我将吸气剂更改为getContentsFrag()并将其引用为.contentsFrag时,这一切都很好。

最佳答案

我相信你想要:

cFrags:[${topic.CFrags}]


大写C。请参见JavaBeans Spec


8.8推断名称的大写。

当我们使用设计模式来推断属性或事件名称时,我们需要决定遵循哪些规则来大写所推断的名称。如果我们从普通的MixedCase样式Java名称的中间提取名称,则该名称默认情况下将以大写字母开头。 Java程序员习惯于使普通标识符以小写字母开头。审阅者的大力投入使我们相信,对于属性和事件名称,我们应遵循相同的常规规则。

因此,当我们从现有Java名称的中间提取属性或事件名称时,通常会将第一个字符转换为小写。但是,为了支持偶尔使用所有大写字母的名称,我们检查名称的前两个字符是否均为大写,是否保留为大写。例如

“ FooBah”成为“ fooBah”
“ Z”变成“ z”
“ URL”变为“ URL”

我们提供了Introspector.decapitalize方法,该方法实现了此转换规则。

07-24 09:44
查看更多