Здесь
<h:dataTable value="#{actividades.getAll}" var="actividad">
Ваше выражение EL недопустимо. Он ищет метод getGetAll()
, но у вас есть только метод getAll()
, представляющий метод получения для (фиктивного) свойства all
. Свойство вообще не должно существовать (в любом случае оно должно быть private
).
Итак, чтобы решить вашу проблему, это должно быть
<h:dataTable value="#{actividades.all}" var="actividad">
или, если вы используете EL 2.2 (но этот способ не рекомендуется)
<h:dataTable value="#{actividades.getAll()}" var="actividad">
В любом случае, он вызовет правильный getAll()
метод.
Не связано с конкретной проблемой, кстати, в вашем коде есть еще один недостаток дизайна. Получатель вызывается столько раз, сколько EL должно решить. Выполнение бизнес / доступа к базе данных в методе получения является плохой идеей. Предполагается, что получатель просто возвращает свойства компонента. Скорее переместите задание DB в конструктор (post) компонента.
private List<Actividad> all;
@PostConstruct
public void init() {
all = actividad.getAll();
}
public List<Actividad> getAll(){
logger.trace("ActividadesController.getAll");
return all;
}
Смотри также: