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}。


