Измененная временная шкала простых лиц выполняется, но не вызывает метод для bean-компонента

Я пытаюсь добавить простые символы в существующий проект Spring/JSF (myfaces). У меня есть действующий компонент временной шкалы (или, по крайней мере, загрузка с правильными данными), но слушатели событий, похоже, не работают правильно. Я пробовал несколько конфигураций, но не могу решить эту проблему.

<p:timeline id="timeline1" 
        value="#{timelineView.getModel(searchFacade.dataModel)}" 
        editable="true" eventMargin="10" eventMarginAxis="0" 
        start="#{timelineView.start}" 
        end="#{timelineView.end}" 
        showNavigation="true" showButtonNew="true" 
        axisOnTop="true" stackEvents="false"
        oncomplete="styleEvents();">  

    <p:ajax event="changed" listener="#{timelineView.onEdit()}" oncomplete="restyleTimeline()" />  
</p:timeline>

В приведенном выше коде измененное событие инициируется и выполняется вызов AJAX. В сетевой панели браузера я вижу, что вызов AJAX всегда выполняется по URL текущей страницы (например, /mypage.jsf?conversationCode=a - я также, очевидно, использую Apache Orchestra)

Фактические данные формы, отправляемые для измененного события, выглядят так:

javax.faces.partial.ajax:true
javax.faces.source:timeline1
javax.faces.partial.execute:timeline1
javax.faces.behavior.event:changed
javax.faces.partial.event:changed
timeline1_eventIdx:0
timeline1_startDate:1498881600000
timeline1_endDate:1510894800000
timeline1_group:<div class='timeline-group'><div class='timeline-row timeline-row-group'>Group One/div><div class='timeline-row timeline-row-sub'>Group One subtitle</div><div class='timeline-row timeline-row-details'>Group One details</div></div>
mainForm:j_id_mt_SUBMIT:1
javax.faces.ViewState: Big hash as usual

Странно длинное имя группы, потому что я форматирую имена выходной группы в более подробный заголовок для строки между прочим.

Боб в спине (импорт и упаковка опущены):

public class TimelineView<T> implements Serializable {
    private static final long serialVersionUID = 1L;

    TimelineView<T> timelineView;

    public TimelineModel getModel() {
        return timelineView.getModel();
    }
    public TimelineModel getModel(ListDataModel<? extends Row<T>> results) {  
        return timelineView.getModel(results);
    }
    public void setTimelineView(TimelineView<T> timelineView) {
        this.timelineView = timelineView;
    }
    public Date getStart() {  
        return timelineView.getStart();  
    }
    public Date getEnd() {  
        return timelineView.getEnd();  
    }
    public void onEdit(TimelineModificationEvent e) {
        timelineView.onEdit(e);
    }
    public void onSelect(TimelineSelectEvent e) {
        timelineView.onSelect(e);
    }
}

Функциональность и код внутри этих методов не имеют значения, потому что, когда я устанавливаю точку останова, я вижу, что метод onEdit никогда не вызывается, и ни один из них не был методом onSelect, когда у меня было событие select на временной шкале.

Поскольку у меня есть Spring, обрабатывающий все bean-компоненты, моя конфигурация была именно такой, она находится в файле ApplicationContext.xml:

<bean id="timelineView" class="com.mycompany.projectone.view.timeline.TimelineView" />

Я попытался добавить форму вокруг временной шкалы, которая не имела никакого значения, а также попытался добавить process=":form_id", что вызвало ошибку "Не удается найти компонент для выражения":form_id"".

В качестве альтернативы, которая также отвечала бы моим потребностям, кто-нибудь знает, как отправлять события простых лиц в функцию javascript для обработки? Например, если пользователь перемещает начальную и конечную точки элемента на временной шкале, я хотел бы обновить отображаемые начальные и конечные даты.

Я также хотел бы изменить или перехватить поведение удаления и изменить то, что происходит при нажатии на ссылку удаления.

Любая помощь будет принята с благодарностью. Благодарю.

РЕДАКТИРОВАТЬ


Предлагаемый потенциальный дубликат не касается ни симптомов, ни фактического решения - см. Ответ ниже.

1 ответ

Решение

Итак, ответ оказывается, что Primfaces timeline Компонент должен иметь виджет, установленный для того, чтобы p:ajax а также pe:javascript звонки на работу. Невероятно простое решение, но так невероятно трудно найти.

Другие вопросы по тегам