Primefaces时间轴onchanged执行但不调用bean上的方法

Primefaces时间轴onchanged执行但不调用bean上的方法

问题描述:

我正试图添加primefaces到现有的Spring/JSF(myfaces)项目。我有实际的时间轴组件工作(或至少加载正确的数据),但事件监听器似乎不能正常工作。我尝试了一些配置,但似乎无法解决此问题。Primefaces时间轴onchanged执行但不调用bean上的方法

<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 

的怪异长组名是因为我顺便说一句格式化输出组名称到一个更详细的标题行。

在后面的豆(入口和包略):

这些方法中的功能和代码没有关系,因为当我设置一个断点,我可以看到,onEdit方法不会被调用当我在时间轴上有一个select事件时,onSelect方法也不是。

因为我有春天处理所有豆子,我的配置只是这一点,位于applicationContext.xml文件:

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

我曾尝试加入的时间表,这没有什么区别围绕的形式,并有还尝试添加process =“:form_id”,从而导致错误“无法找到表达式的组件”:form_id“”。

作为一种替代方案,也适合我的需求,有谁知道如何发送primefaces事件到一个JavaScript函数来处理?例如,如果用户在时间轴中移动项目的开始和结束点,我想更新显示的开始和结束日期。

我也想更改或拦截删除行为,并修改点击删除链接时发生的情况。

任何帮助将非常感激。谢谢。

编辑


建议的潜在的重复没有解决症状,也没有实际的解决方案 - 见下文回答。

+0

[commandButton/commandLink/ajax动作/侦听器方法未被调用或输入值未设置/更新]的可能重复(https://*.com/questions/2118656/commandbutton-commandlink-ajax-action-listener-method - 未调用或输入值)编号#11 – Kukeltje

+0

并在调试模式下运行您的应用程序,我会期待错误! – Kukeltje

好的,所以答案结果是,Primfaces timeline组件必须有一个widgetVar集才能使p:ajaxpe:javascript调用正常工作。令人难以置信的简单解决方案,但非常难以找到。