javax.el.PropertyNotFoundException:在类型com.example.Bean上找不到属性’foo’
从字面上看,这意味着所提到的类com.example.Bean
没有针对所提到的property的公共(非静态!)getter方法foo
。请注意,此处的字段本身无关紧要!
公共获取方法的名称必须以开头get
,然后是属性名称,该属性名称仅在属性名称的第一个字母处大写,例如Foo
。
public Foo getFoo() {
return foo;
}
因此,你需要确保有一个getter方法精确匹配属性名称,并且该方法是public
( -static
),并且该方法不带任何参数,它返回非void
。如果您只有一个,但仍然无法正常工作,则很可能是您忙于来回编辑代码,而没有牢固地清理构建,重新构建代码以及重新部署/重新启动应用程序。您需要确保已这样做。
对于boolean
(不是Boolean
!)属性,getter方法名称必须以开头,is
而不是get
。
public boolean isFoo() {
return foo;
}
因此,无论类型如何,foo
字段本身的存在 重要。它可以具有不同的名称,也可以完全不存在,甚至可以是static
。以下所有内容仍应可通过访问${bean.foo}
。
public Foo getFoo() {
return bar;
}
public Foo getFoo() {
return new Foo("foo");
}
public Foo getFoo() {
return FOO_CONSTANT;
}
您会看到,该字段不是重要的,而是getter方法本身。请注意,属性名称本身不应在EL中大写。换句话说,${bean.Foo}
它将永远不会起作用${bean.foo}
。