javax.el.PropertyNotFoundException: свойство 'foo' не найдено для типа com.example.Bean
Это буквально означает, что у упомянутого класса com.example.Bean
нет открытого (нестатического!) Метода получения для упомянутого свойства foo
. Обратите внимание, что само поле здесь не имеет значения!
Публичное имя метода получения должно начинаться с get
, за которым следует имя свойства, которое пишется с заглавной буквы только в первой букве имени свойства, как в Foo
.
public Foo getFoo() {
return foo;
}
Таким образом, вам необходимо убедиться, что существует метод-получатель, точно совпадающий с именем свойства, и что этот метод имеет вид public
( non - static
) и что метод не принимает никаких аргументы и что он возвращает не- void
. Если он у вас есть, но он все еще не работает, то есть вероятность, что вы были заняты редактированием кода вперед и назад без тщательной очистки сборки, перестройки кода и повторного развертывания / перезапуска приложения. Вы должны убедиться, что вы сделали это.
Для boolean
(не Boolean
!) Свойств имя метода получения должно начинаться с 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;
}
Видите ли, поле - это не то, что имеет значение, а сам метод получения. Обратите внимание, что само имя свойства не должно быть заглавной в EL. Другими словами, ${bean.Foo}
никогда не будет работать, это должно быть ${bean.foo}
.
Смотри также: