Когда я направить АЯКС события из Составных компонента с помощью <cc:clientBehavior name="chartUpdated" event="change" targets="chartdata"/>
я ловлю его на Facelet страницы с помощью <f:ajax event="chartUpdated" listener="#{bean.updateListener}">
. И В бэк-бобов Я регистрирую событие типа AjaxBehaviorEvent.Как расширить AjaxBehaviorEvent, отправленный с @FacesComponent?
public void updateListener(AjaxBehaviorEvent event){
...
}
Я undertand, что я могу продлить AjaxBehaviorEvent и передать в него объект, который был изменен. For example, Primefaces's Scheduler uses this approach:
<p:ajax event="eventMove" listener="#{scheduleView.onEventMove}" update="messages" />
И поддержка боб:
public void onEventMove(ScheduleEntryMoveEvent event) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Event moved", "Day delta:" + event.getDayDelta() + ", Minute delta:" + event.getMinuteDelta());
addMessage(message);
}
Можно ли достичь той же функциональности, используя Составной компонент вместе с @FacesComponent?
Спасибо заранее!
Я тоже :) Спасибо за помощь. Я реализовал ваше решение без применения метода ** validate **, и он работает нормально. Что мне не хватает? – Anatoly
Это зависит от фазы. Если событие запускается в фазе APPLY_REQUEST_VALUES (например, события «change»), вызовы 'component.getValue()' возвращают устаревшее значение. В противном случае нет необходимости откладывать, т. Е. События «valueChange» запускаются в фазе PROCESS_VALIDATIONS. –
Следует отметить, что этот подход тесно связан с PrimeFaces из-за 'Constants'. Если вы планируете использовать компонент для повторного использования во всех библиотеках компонентов, вам лучше удалить импорт из PrimeFaces. – BalusC