当前位置: 首页 > 面试题库 >

我是不是误解了JavaBean方法的命名约定,还是很奇怪?

苏昂雄
2023-03-14
问题内容

我的代码中发生了一些不可思议的事情。这是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方法,该方法实现了此转换规则。



 类似资料:
  • 问题内容: 如果我的Java类中有一个属性’gId’,该accessor方法应命名为什么? 这就是我的假设。 如果有一个属性,我认为应该是,这种外观很难看(尽管这并不是指女孩的另一种拼写)。 如果该属性只是方法名称,那么我不会首先将该属性命名为URL,这会使访问器再次变得丑陋- 我记得在Javabean Specification PDF的某处读到了有关属性的大写以及涉及首字母缩略词的案例,但现在

  • 问题内容: 这是我的方法: 表名是小写,下划线的用途来分隔词语,并且是单数(例如,等 我通常(并非总是)具有自动增量PK。我用下面的约定:(例如,等)。 当表包含作为外键的列时,我只需从它来自的任何表中复制该键的列名。例如,假设表格具有FK (的PK )。 在定义FK来强制引用完整性时,我使用以下代码:(例如,扩展示例3,它将是)。由于这是表名/列名的组合,因此可以保证它在数据库中是唯一的。 我按

  • 为什么当我添加一个语义谓词(虽然这里是一个虚拟谓词)作为替代选项时,它总是说“第1行:5在输入' '处没有可行的替代选项”?如果我删除带有false语义谓词的替代选项,错误就会像预期的那样消失。 PS:我使用的是antlr-4.0-complete.jar

  • 连上后马上掉线, 试过多次后,直接连不上了 现在一直是下图这个界面, 咋办好, 电脑是不是中毒了呢

  • 问题内容: 环境:Ubuntu x86_64(14.10),Oracle JDK 1.8u25 我尝试使用的并行流,但我想要第一行(这是带有标头的CSV文件)。因此,我尝试这样做: 但是随后一列无法解析为一个整数… 所以我尝试了一些简单的代码。文件问题很简单: 代码也同样简单: 我 系统地 得到了以下结果(好的,我只运行了大约20次): 我在这里想念什么? 编辑 似乎问题或误解根源远不止于此(以下

  • Spring-data-jpa对@query注释中定义的query做了什么?它是在部署期间被翻译成SQL一次(如NamedQuery)还是每次都被翻译一次(如动态查询)?