Я получаю ошибки, когда добавляю этот ActionListener

У меня есть код ниже:

 <h:commandButton type="submit" action="#{clController.getPaymentByMonth(clController.type)}"  id="stateInfo"  value="Show Monthly "  >
  <f:actionListener binding="#{clController.getTotal(clController.type)}" />
</h:commandButton>

Когда я добавляю <f:actionListener binding=", это дает ниже ошибки:

at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)
    at com.sun.faces.facelets.tag.jsf.core.ActionListenerHandler$LazyActionListener.processAction(ActionListenerHandler.java:112)
    at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)

Эта функция getTotal:

 List<CustomerPayment> total = null;
        try {
            org.hibernate.Transaction tx = session.beginTransaction();
            Query q = session.createQuery("SELECT SUM(amount) from CustomerPayment where DATE like '%"+year+"' GROUP BY type");
            total = (List<CustomerPayment>) q.list();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return totalDataTable = new ListDataModel(total);

В чем может быть проблема?

Ответы

Ответ 1

Проблема заключается в значении атрибута actionListener binding - он должен указывать на объект, реализующий интерфейс actionListener - не вызов метода, как в вашем случае.

Из спецификации JSF:

Выражение привязки значений, которое оценивается объектом, реализующим javax.faces.event.ActionListener.