2013-05-01 7 views
0

У меня есть код ниже:я получаю ошибки, когда я добавить 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); 

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

+0

Я хочу, чтобы вызвать два метода, когда я нажимаю commandButton – user2326472

+1

Вы пропустили верхнюю часть трассировки стека. Строки «... at ...» появляются после первой, всеохватывающей строки, описывающей исключение. –

ответ

2

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

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

Значение связывания выражение, которое вычисляется в объект, который реализует javax.faces.event.ActionListener.

Смежные вопросы